在查询中使用带批注的 XDR 架构(不推荐在 SQLXML 4.0 中使用)

重要说明重要提示

本主题是针对早期应用程序提供的参考,以后不会就该功能继续进行开发。请避免在新的开发工作中使用此功能,而应使用带批注的 XSD 架构来创建 XML 视图。有关详细信息,请参阅带批注的 XSD 架构简介 (SQLXML 4.0)。可以将现有带批注的 XDR 架构转换为 XSD 架构。有关详细信息,请参阅将带批注的 XDR 架构转换为等效的 XSD 架构 (SQLXML 4.0)

注意注意

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

有几种方法可以针对带批注的架构指定查询以从数据库检索数据:

  • 针对 XDR 架构在模板中指定 XPath 查询

    <sql:xpath-query> 元素允许您针对带批注的架构所定义的 XML 视图指定 XPath 查询。使用 <sql:xpath-query> 元素的 mapping-schema 属性来标识带批注的架构,将针对该架构执行 XPath 查询。

    模板是包含一个或多个查询的有效 XML 文档。FOR XML 和 XPath 查询返回文档片段。模板充当生成的文档片段的容器(模板提供一种指定单个顶级元素的方法)。

    本主题中的示例使用模板针对带批注的架构指定 XPath 查询以从数据库检索数据。

  • 内联映射架构

    带批注的架构可以直接包括在模板中。sql:is-mapping-schema 批注用于指定带批注的内联架构。sql:is-mapping-schema 取布尔类型的值(0 = FALSE,1 = TRUE)。为模板中的 <Schema> 元素指定 sql:is-mapping-schema。

    sql:id 属性唯一标识包含它的元素。sql:id 是 ID 类型的属性,针对 <Schema> 元素指定。然后使用赋给 sql:id 的值通过在 <sql:xpath-query> 中使用 mapping-schema 属性引用带批注的内联架构。

    例如,以下是一个指定带批注的内联架构的模板:

    <ROOT     xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <Schema xmlns="urn:schemas-microsoft-com:xml-data"
    
       sql:id="MyMappingSchema"
       sql:is-mapping-schema="1">
    
        <ElementType name="Person.Contact" >
          <AttributeType name="ContactID" />
          <AttributeType name="FirstName" />
          <AttributeType name="LastName" />
    
          <attribute type="ContactID" />
          <attribute type="FirstName" />
          <attribute type="LastName" />
        </ElementType>
      </Schema>
    
    <sql:xpath-query mapping-schema="#MyMappingSchema">
      Person.Contact[@ContactID &lt; 4]
    </sql:xpath-query>
    </ROOT>
    

    为了进行说明,使用文件名 InlineSchemaTemplate.xml 保存此模板。