在 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-encode ID、IDREF、IDREFS、NMTOKEN 和 NMTOKENS 属性类型。
例子
若要创建使用以下示例的工作示例,必须满足某些要求。 有关详细信息,请参阅 运行 SQLXML 示例的要求。
答: 在元素上指定 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。
复制以下模板,并将它粘贴到文本文件中。 将文件另存为 UseCDataT.xml 保存在保存 UseCData.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>