使用 sql:is-constant 创建常量元素(XDR 架构)
重要提示 |
---|
本主题是针对早期应用程序提供的参考,以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能,而应使用带批注的 XSD 架构来创建 XML 视图。有关详细信息,请参阅带批注的 XSD 架构简介 (SQLXML 4.0)。可以将现有带批注的 XDR 架构转换为 XSD 架构。有关详细信息,请参阅将带批注的 XDR 架构转换为等效的 XSD 架构 (SQLXML 4.0)。 |
根据默认映射,将 XDR 架构中的每个元素和属性映射到数据库表和列。但有时,您可能需要在 XDR 架构中创建不映射到任何数据库表或列但仍显示在 XML 文档中的元素。这些元素称为常量元素。若要创建常量元素,请指定 sql:is-constant 批注。sql:is-constant 接受布尔值(0 = FALSE,1 = TRUE)。
针对 <ElementType> 指定此批注,该元素不映射到任何数据库表,因此是常量元素。sql:is-constant 批注可以用于以下操作:
将顶级元素添加到 XML 文档。XML 要求为文档提供一个顶级元素(<root> 元素)。
创建容器元素,例如包装所有订单的 <Orders> 元素。
示例
若要创建使用以下示例的工作示例,必须满足某些要求。有关详细信息,请参阅运行 SQLXML 示例的要求。
A. 指定 sql:is-constant 以添加容器元素
在这一带批注的 XDR 架构中,<OrderList> 定义为包含所有 <Orders> 子元素的常量元素。对 OrderList<ElementType> 指定了 sql:is-constant 批注,这使该元素成为常量,也因此不映射到任何数据库表。虽然 <OrderList> 元素不映射到任何数据库表/列,它仍然会作为包含 <Orders> 子元素的容器元素出现在生成的 XML 中。
<?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="Sales.SalesOrderHeader" >
<AttributeType name="SalesOrderID" />
<attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
<element type="Orders">
<sql:relationship
key-relation="Sales.Customer"
foreign-relation="Sales.SalesOrderHeader"
key="CustomerID"
foreign-key="CustomerID" />
</element>
</ElementType>
<ElementType name="Sales.Customer" >
<AttributeType name="CustomerID" />
<attribute type="CustomerID" />
<element type="OrderList" />
</ElementType>
</Schema>
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 isConstant-xdr.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 isConstant-xdr.xml 的目录中将该文件另存为 isConstant-xdrT.xml。模板中的 XPath 查询选择 CustomerID 属性值为 1 的所有 <Sales.Customer> 元素。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" > <sql:xpath-query mapping-schema="isConstant-xdr.xml" > /Sales.Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
为映射架构 (isConstant-xdr.xml) 指定的目录路径是相对于模板保存目录的相对路径。也可以指定绝对路径,例如:
mapping-schema="C:\MyDir\isConstant-xdr.xml"
创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。
有关详细信息,请参阅使用 ADO 执行 SQLXML 4.0 查询。
下面是结果集:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Sales.Customer CustomerID="1">
<OrderList>
<Sales.SalesOrderHeader SalesOrderID="43860" />
<Sales.SalesOrderHeader SalesOrderID="44501" />
<Sales.SalesOrderHeader SalesOrderID="45283" />
<Sales.SalesOrderHeader SalesOrderID="46042" />
</OrderList>
</Sales.Customer>
</ROOT>