使用 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> 元素。

sql:is-constant 注可以添加到 <complexType> 元素。

示例

若要创建使用以下示例的工作示例,必须满足某些要求。 有关详细信息,请参阅 运行 SQLXML 示例的要求

A. 指定 sql:is-constant 以添加容器元素

在此带批注的 XSD 架构中, <CustomerOrders> 通过指定 sql:is-constant 值为 1 的属性,定义为常量元素。 因此, <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 查询
  1. 复制上面的架构代码,并将它粘贴到文本文件中。 将该文件另存为 isConstant.xml。

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