使用 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 查询

  1. 复制上面的架构代码,并将它粘贴到文本文件中。将文件另存为 isConstant-xdr.xml。

  2. 复制以下模板,并将它粘贴到文本文件中。在保存 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"
    
  3. 创建并使用 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>