sql:use-cdata를 사용하여 CDATA 섹션 만들기(SQLXML 4.0)
적용 대상: SQL Server Azure SQL Database
XML에서 CDATA 섹션은 태그 문자로 인식되는 문자가 포함된 텍스트 블록을 이스케이프하는 데 사용됩니다.
Microsoft SQL Server의 데이터베이스에는 XML 파서에서 태그 문자로 처리되는 문자가 포함될 수 있습니다. 예를 들어 꺾쇠 괄호(< 및 >), 작거나 같음 기호(<=) 및 앰퍼샌드(>)는 태그 문자로 처리됩니다. 그러나 CDATA 섹션에서 이러한 유형의 특수 문자를 래핑하여 태그 문자로 처리되지 않도록 할 수 있습니다. CDATA 섹션 내의 텍스트는 XML 파서에서 일반 텍스트로 처리됩니다.
sql:use-cdata 주석은 SQL Server에서 반환된 데이터를 CDATA 섹션에 래핑하도록 지정하는 데 사용됩니다. 즉, sql:field로 지정된 열의 값을 CDATA 섹션에 묶어야 하는지 여부를 나타냅니다. sql:use-cdata 주석은 데이터베이스 열에 매핑되는 요소에서만 지정할 수 있습니다.
sql:use-cdata 주석은 부울 값(0 = false, 1 = true)을 사용합니다. 허용되는 값은 0, 1, true 및 false입니다.
이 주석은 sql:url 인코딩 또는 ID, IDREF, IDREFS, NMTOKEN 및 NMTOKENS 특성 형식에서 사용할 수 없습니다.
예제
다음 예제를 사용하여 작업 샘플을 만들려면 특정 요구 사항을 충족해야 합니다. 자세한 내용은 SQLXML 실행 요구 사항 예제를 참조 하세요.
A. 요소에 sql:use-cdata 지정
다음 스키마에서 sql:use-cdata는 Address> 요소 내<의< AddressLine1에 대해 1(True)로> 설정됩니다. 결과적으로 데이터는 CDATA 섹션에 반환됩니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Address"
sql:relation="Person.Address"
sql:key-fields="AddressID" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="AddressID" type="xsd:string" />
<xsd:element name="AddressLine1" type="xsd:string"
sql:use-cdata="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 UseCData.xml 저장합니다.
다음 템플릿을 복사하여 텍스트 파일에 붙여넣습니다. UseCData.xml을 저장한 디렉터리와 같은 디렉터리에 UseCDataT.xml로 파일을 저장합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UseCData.xml"> /Address[AddressID < 11] </sql:xpath-query> </ROOT>
매핑 스키마(UseCData.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리를 기준으로 합니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\UseCData.xml"
SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들고 사용하여 템플릿을 실행합니다.
자세한 내용은 ADO를 사용한 SQLXML 4.0 쿼리를 실행합니다.
다음은 결과 집합의 일부입니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Address>
<AddressID>1</CustomerID>
<AddressLine1>
<![CDATA[ 1970 Napa Ct. ]]>
</AddressLine1>
</Address>
<Address>
<AddressLine1>
<![CDATA[ 9833 Mt. Dias Blv. ]]>
</AddressLine1>
</Address>
...
</ROOT>