XMLPARSE 스칼라 함수

XMLPARSE 함수는 인수를 XML 문서로서 구문 분석하고 XML 값을 리턴합니다.

Read syntax diagramSkip visual syntax diagramXMLPARSE(DOCUMENTstring-expression STRIP WHITESPACEPRESERVE WHITESPACE )

스키마는 SYSIBM입니다. 함수 이름은 자격이 부여된 이름으로 지정될 수 없습니다.

DOCUMENT
구문 분석될 문자열 표현식이 XML 네임스페이스 권장사항에 의해 수정된 대로 XML 1.0을 준수하는 올바른 형식의 XML 문서로 평가되어야 함을 지정합니다(SQLSTATE 2200M).
문자열 표현식
문자열 또는 BLOB 값을 리턴하는 표현식을 지정합니다. 매개변수 표시문자가 사용된 경우에는 지원되는 데이터 유형 중 하나로 명시적으로 캐스트되어야 합니다.
STRIP WHITESPACE 또는 PRESERVE WHITESPACE
입력 인수의 공백이 유지되는지 여부를 지정합니다. 지정되지 않은 경우에는 STRIP WHITESPACE가 기본값입니다.
STRIP WHITESPACE
길이 최대 1000바이트의 공백 문자만을 포함하는 텍스트 노드는 가장 가까운 포함 요소에 xml:space='preserve' 속성이 있지 않는 한 삭제됩니다. 텍스트 노드가 1000바이트가 넘는 공백으로 시작되는 경우에는 오류가 리턴됩니다(SQLSTATE 54059).

CDATA 섹션에서 공백 문자는 또한 이 옵션의 영향을 받습니다. DTD에는 요소의 DOCTYPE 선언이 있을 수 잇지만 요소의 컨텐츠 모델은 공백이 삭제되었는지 여부를 판별하는 데 사용되지 않습니다.

PRESERVE WHITESPACE
가장 가까운 포함 요소에 속성 xml:space='default'이 있더라도 모든 공백이 유지되어야 함을 지정합니다.

결과의 데이터 유형은 XML입니다. string-expression의 결과가 널일 수 있으면 결과는 널일 수 있습니다. 모든 string-expression의 결과가 널이면 결과는 널(NULL) 값입니다.

참고

  • 입력 문자열의 인코딩: 입력 문자열은 XML 문서에서 문자의 인코딩을 식별하는 XML 선언을 포함할 수도 있습니다. 문자열이 문자열로서 XMLPARSE 함수에 전달되면 이는 데이터베이스 서버에서 코드 페이지로 변환됩니다. 이 코드 페이지는 시작하는 코드 페이지 및 XML 선언에 식별된 인코딩과는 다를 수 있습니다.

    그러므로 애플리케이션은 문자열 입력과 함께 XMLPARSE의 직접 사용을 피해야 하며 외부 코드 페이지와 XML 선언의 인코딩 간의 일치를 유지하기 위해서 호스트 변수를 직접 사용하여 XML 문서를 포함하는 문자열을 전송해야 합니다. XMLPARSE가 이 상황에 사용되어야 하는 경우에는 코드 페이지 변환을 피하기 위해 BLOB 유형이 인수로서 지정되어야 합니다.

  • DTD의 처리: 외부 문서 유형 정의(DTD) 및 엔티티는 데이터베이스에 등록되어야 합니다. 내부 및 외부 DTD 둘 모두가 유효한 구문인지 확인됩니다. 구문 분석 프로세스 중에 다음 조치 또한 수행됩니다.
    • 내부 및 외부 DTD가 정의하는 기본값이 적용됩니다.
    • 엔티티 참조 및 매개변수 엔티티는 해당 확장된 양식으로 대체됩니다.
    • 내부 DTD 및 외부 DTD가 동일한 요소를 정의하는 경우에는 오류가 리턴됩니다(SQLSTATE 2200M).
    • 내부 DTD 및 외부 DTD가 동일 엔티티나 속성을 정의하는 경우에는 내부 정의가 선택됩니다.
    구문 분석 후에 내부 DTD 및 엔티티 및 외부 DTD 및 엔티티에 대한 참조는 값의 저장된 표현에 유지되지 않습니다.
  • 비UTF-8 데이터베이스에서 문자 변환: 문서가 호스트 변수 또는 문자 데이터 유형의 매개변수 표시기 또는 문자 리터럴로부터 전달되는 경우 XML 문서가 비유니코드 데이터베이스 서버로 구문 분석될 때 코드 페이지 변환이 발생합니다. 호스트 변수 또는 XML, BLOB 또는 FOR BIT DATA(CHAR FOR BIT DATA 또는 VARCHAR FOR BIT DATA) 유형의 매개변수 표시문자를 사용하여 XML 문서를 구문 분석하면 코드 페이지 변환이 방지됩니다. 문자 데이터 유형이 사용되면 XML 문서의 모든 문자가 대상 데이터베이스 코드 페이지에 일치하는 코드 포인트가 있는지 확인하기 위해 주의를 기울여야 합니다. 그렇지 않으면 대체 문자가 도입될 수도 있습니다. 구성 매개변수 enable_xmlchar을(를) 사용하여 비유니코드 데이터베이스에 저장된 XML 데이터의 무결성을 확인할 수 있습니다. 이 매개변수를 "NO"로 설정하면 XML 문서가 문자 데이터 유형으로부터 삽입되는 것을 차단합니다. 이러한 데이터 유형을 사용하여 데이터베이스에 전달되는 문서가 코드 페이지 변환을 피하므로 BLOB 및 FOR BIT DATA 데이터 유형은 여전히 허용됩니다.

PRESERVE WHITESPACE 옵션을 사용하면 설명 요소의 공백 문자를 포함하여 테이블에 삽입된 XML 문서에 공백 문자를 유지합니다.

INSERT INTO PRODUCT VALUES ('100-103-99','Tool bag',14.95,NULL,NULL,NULL,
XMLPARSE( DOCUMENT 
  '<product xmlns="http://posample.org" pid="100-103-99">
    <description>
     <name>Tool bag</name>
     <details>
      Super Deluxe tool bag:
      - 26 inches long, 12 inches wide
      - Curved padded handle
      - Locking latch
      - Reinforced exterior pockets
     </details>
     <price>14.95</price>
     <weight>3 kg</weight>
    </description>
  </product>' PRESERVE WHITESPACE ));
다음 선택 문을 실행하면
SELECT XMLQUERY ('$d/*:product/*:description/*:details' PASSING DESCRIPTION as "d" )
FROM PRODUCT WHERE PID = '100-103-99' ;
공백 문자가 있는 상세 정보 요소가 리턴됩니다.
<details xmlns="http://posample.org">
  Super Deluxe tool bag:
  - 26 inches long, 12 inches wide 
  - Curved padded handle
  - Locking latch
  - Reinforced exterior pockets
</details>