XML을 구문 분석하기 전에 XML의 유효성을 검사하도록 XML 파서 변환을 구성할 수 있습니다. XML 파서 변환은 스키마에 대해 XML의 유효성을 검사합니다. XML이 스키마에 대해 유효하지 않은 경우 행 오류가 발생합니다. XML 파서 변환은 XML 및 관련된 오류 메시지를 별도의 출력 그룹에 반환합니다. 사용자는 올바르지 않은 XML 및 오류 메시지를 대상에 전달할 수 있습니다.
예를 들어 실시간 PowerCenter 세션이 WebSphere MQSeries 소스에서 XML 메시지를 읽습니다. 이 세션은 소스 기반 커밋으로 실행됩니다. 커밋 트랜잭션의 메시지에는 올바르지 않은 XML 페이로드가 있습니다. 커밋의 실패를 방지하도록 올바른 데이터에서 별도의 출력 그룹으로 올바르지 않은 XML을 반환하도록 XML 파서 변환을 구성할 수 있습니다. XML 파서 변환은 올바른 XML 메시지를 처리하고 트랜잭션을 완료합니다.
세션 로그에는 Route Invalid Payload Through Data Flow(데이터 흐름을 통해 잘못된 페이로드 라우팅)가 활성화되는 시기를 나타내는 메시지가 포함되어 있습니다. 세션 추적 수준을 일반으로 설정하는 경우 통합 서비스는 유효성 검사가 성공적인지 여부를 나타내는 세션 로그에 메시지를 씁니다. 로그 메시지에는 XML 파서가 XML의 유효성을 검사하기 위해 액세스한 스키마 위치가 포함되어 있습니다. XML 스트리밍이 활성화되어 있고 XML이 올바르지 않은 경우 통합 서비스에서는 XML을 잘라서 Invalid_Payload 포트에 전달합니다. 통합 서비스는 세션 로그에 올바르지 않은 XML을 기록합니다.
XML의 유효성을 검사하도록 XML 파서 변환을 구성하려면 미드스트림 XML 파서 탭에서 Route Invalid Payload Through Data Flow(데이터 흐름을 통해 잘못된 페이로드 라우팅) 옵션을 활성화하십시오. 디자이너가 다음 포트를 XML 파서 변환에 추가합니다.
Invalid_Payload
. 올바른지 않은 XML 메시지를 파이프라인에 반환합니다. XML 페이로드가 올바른 경우 Invalid_Payload 포트에는 null 값이 포함됩니다. 이 포트에는 DataInput 포트와 동일한 전체 자릿수가 있습니다.
Error_Status
. XML 유효성 검사에서 반환된 오류 문자열 또는 상태를 포함합니다. XML이 현재 행에 대해 올바른 경우 Error_Status에는 null 값이 포함됩니다. 이 포트에는 DataInput 포트와 동일한 전체 자릿수가 있습니다.
다음 그림에서는 올바르지 않은 XML 메시지를 오류 대상 테이블에 라우팅하는 XML 파서 변환을 보여 줍니다.
이 매핑에는 다음 개체가 포함됩니다.
MQSeries 소스 정의.
메시지 데이터 필드의 직원 XML 데이터를 포함합니다.
소스 한정자 변환
. WebSphere MQ에서 데이터를 읽습니다. 메시지 헤더 필드 및 메시지 데이터 필드를 나타내는 포트 집합을 포함합니다.
XML 파서 변환
. DataInput 포트의 XML 메시지 데이터를 받습니다. XML이 올바른 경우 XML 파서 변환은 직원 데이터를 반환하고 이 데이터를 대상에 전달합니다. XML이 올바르지 않은 경우 XML 파서 변환은 Invalid_Payload 포트의 XML을 반환합니다. Error_Status 포트의 오류 메시지를 반환합니다.
직원 대상 정의
. 올바른 직원 데이터 행을 받습니다.
XML_Errors 대상 정의.
올바르지 않은 XML 및 오류 메시지를 받습니다.
변환에 대한 세션 속성에서 XML 스키마 위치 특성을 구성하십시오. 스키마의 이름과 위치를 입력하여 XML의 유효성을 검사하십시오. XML 스키마 정의에 대한 워크플로우, 세션 또는 매핑 변수 및 매개 변수를 구성할 수 있습니다. 세미콜론으로 스키마를 구분하면 유효성 검사를 위해 여러 스키마를 구성할 수 있습니다.
입력 XML 페이로드에 DTD를 포함하면 유효성 검사에 이 DTD를 사용할 수 있습니다. XML 스키마 위치 특성에서 DTD를 구성하거나 이 DTD를 사용하여 올바르지 않은 XML 데이터를 잘못된 페이로드 포트에 라우팅할 수 없습니다.
XML 스트리밍을 활성화하는 경우 Invalid_Payload 포트에 대한 전체 자릿수가 최대 메시지 크기와 일치하는지 확인하십시오. 포트 전체 자릿수가 메시지 크기보다 작은 경우 XML 파서 변환에서 Invalid_Payload 포트의 잘린 XML을 반환하고 세션 로그에 오류를 기록합니다.