使用 sql:is-constant 创建常量元素 (SQLXML 4.0)
若要指定常量元素,即 XSD 架构中不映射到任何数据库表或列的元素,可以使用 sql:is-constant 批注。该批注取布尔值(0 = false,1 = true)。可接受的值为 0、1、true 和 false。可以在不具有任何属性的元素中指定 sql:is-constant 批注。如果使用值 true(或 1)在元素中指定该批注,则该元素不会被映射到数据库,但仍出现在 XML 文档中。
sql:is-constant 批注可以用于以下操作:
将顶级元素添加到 XML 文档。XML 要求为文档提供一个顶级元素(根元素)。
创建容器元素,例如包装所有订单的 <Orders> 元素。
可以向 <complexType> 元素添加 sql:is-constant 批注。
示例
若要创建使用以下示例的工作示例,必须满足一些要求。有关详细信息,请参阅运行 SQLXML 示例的要求。
A. 指定 sql:is-constant 以添加容器元素
在该带批注的 XSD 架构中,通过使用值 1 指定属性 sql:is-constant,将 <CustomerOrders> 定义为常量元素。因此,<CustomerOrders> 不会被映射到任何数据库表或列。该常量元素由 <Order> 子元素组成。
虽然 <CustomerOrders> 不映射到任何数据库表或列,它仍然会作为包含 <Order> 子元素的容器元素出现在生成的 XML 中。
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="CustOrders"
parent="Sales.Customer"
parent-key="CustomerID"
child="Sales.SalesOrderHeader"
child-key="CustomerID" />
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Customer" sql:relation="Sales.Customer" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CustomerOrders" sql:is-constant="1" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Order" sql:relation="Sales.SalesOrderHeader"
sql:relationship="CustOrders"
maxOccurs="unbounded" >
<xsd:complexType>
<xsd:attribute name="SalesOrderID" type="xsd:integer" />
<xsd:attribute name="OrderDate" type="xsd:date" />
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
针对该架构测试示例 XPath 查询
复制上面的架构代码,并将它粘贴到文本文件中。将该文件另存为 isConstant.xml。
复制以下模板,并将它粘贴到文本文件中。在保存 isConstant.xml 的同一目录中将该文件另存为 isConstantT.xml。
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="isConstant.xml"> Customer[@CustomerID=1] </sql:xpath-query> </ROOT>
为映射架构 (isConstant.xml) 指定的目录路径是相对于模板保存目录的相对路径。也可以指定绝对路径,例如:
mapping-schema="C:\MyDir\isConstant.xml"
创建并使用 SQLXML 4.0 测试脚本 (Sqlxml4test.vbs) 执行该模板。
有关详细信息,请参阅使用 ADO 执行 SQLXML 查询。
部分结果集如下:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="1">
<CustomerOrders>
<Order SalesOrderID="43860" OrderDate="2001-08-01" CustomerID="1" />
<Order SalesOrderID="44501" OrderDate="2001-11-01" CustomerID="1" />
<Order SalesOrderID="45283" OrderDate="2002-02-01" CustomerID="1" />
<Order SalesOrderID="46042" OrderDate="2002-05-01" CustomerID="1" />
...
</CustomerOrders>
</Customer>
</ROOT>