使用 sql:use-cdata(XDR 架构)创建 CDATA 节
![]() |
---|
本主题是针对早期应用程序提供的参考。以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能。请改用带批注的 XSD 架构创建 XML 视图。有关详细信息,请参阅带批注的 XSD 架构简介 (SQLXML 4.0)。可以将现有带批注的 XDR 架构转换为 XSD 架构。有关详细信息,请参阅将带批注的 XDR 架构转换为等效的 XSD 架构 (SQLXML 4.0)。 |
在 XML 中,CDATA 节用于对其中所含字符否则会被识别为标记的文本块进行转义。
Microsoft SQL Server 数据包含的字符可能被 XML 分析器视为特殊字符,例如,<、>、< =、& 这样的字符被视为标记字符。如果想避免 SQL Server 数据包含被视为标记的特殊字符,可以将它们放在 CDATA 节中。放在 CDATA 节中的文本被视为纯文本。
sql:use-cdata 批注用于指定 SQL Server 返回的数据是否包含在 CDATA 节中。使用 sql:use-cdata 批注可以指示由 sql:field 指定的列中的值是否应当包含在 CDATA 节中。可以在 <ElementType> 或 <element> 上指定 sql:use-cdata 批注,并接受布尔值(0 = FALSE,1 = TRUE)。sql:use-cdata 不能与 sql:url-encode 一起使用,也不能用在任何属性类型 ID、IDREF、IDREFS、NMTOKEN 或 NMTOKENS 上。
示例
若要创建使用以下示例的工作示例,必须满足一些要求。有关详细信息,请参阅运行 SQLXML 示例的要求。
A. 在元素上指定 sql:use-cdata
在该架构中,对于 <AddressLine1> 元素,sql:use-cdata 设置为 1 (TRUE)。结果,在 CDATA 节中返回 <AddressLine1> 的数据。
<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="AddressID" content="textOnly" />
<ElementType name="AddressLine1" content="textOnly" />
<ElementType name="Address" sql:relation="Person.Address">
<element type="AddressID" />
<element type="AddressLine1" sql:use-cdata="1" />
</ElementType>
</Schema>
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将该文件另存为 UseCdataXdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 UseCdataXdr.xml 的相同目录中将该文件另存为 UseCdataXdrT.xml。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="UseCdataXdr.xml"> /Address[@AddressID=1] </sql:xpath-query> </ROOT>
为映射架构 (UseCdataXdr.xml) 指定的目录路径是相对于模板保存目录的相对路径。也可以指定绝对路径,例如:
mapping-schema="C:\MyDir\UseCdataXdr.xml"
创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。
有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询。
下面是结果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Address>
<AddressID>1</AddressID>
<AddressLine1>
<![CDATA[ 1970 Napa Ct.]]>
</AddressLine1>
</Address>
</ROOT>