XPath の例で使用する注釈付き XSD スキーマのサンプル (SQLXML 4.0)

ここで説明するサンプル XPath クエリは、マッピング スキーマを参照します。マッピング スキーマは注釈付き XML スキーマ (XSD) ファイルです。マッピング スキーマの詳細については、「注釈付き XSD スキーマの概要 (SQLXML 4.0)」を参照してください。

注意注意

サンプル XPath クエリを実行するには、AdventureWorks サンプル データベースがインストールされている必要があります。詳細については、「AdventureWorks サンプル データベース」を参照してください。

注釈付き XSD スキーマに対して XPath クエリを実行するには、次の作業が必要です。

  • XPath クエリを含むテンプレートを作成し、テンプレート内に、XPath クエリの実行対象となるマッピング スキーマを指定します。このマッピング スキーマは、テンプレート ファイルに関連付けられているディレクトリまたはそのサブディレクトリに保存されている必要があります。サブディレクトリの場合は、テンプレート内に mapping-schema 属性の値として相対パスを指定します。

  • クエリの実行に ADO 用 SQLXML 拡張を使用するテスト アプリケーションを作成します。詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。

ここで紹介する例はあくまでも参考用です。これらの例では XPath クエリをテンプレート内に指定し、ADO を使用してテンプレートを実行するため、次のマッピング スキーマ ファイル (SampleSchema1.xml) を使用する必要があります。このファイルは、テンプレートと同じディレクトリに保存してください。

サンプル注釈付き XSD スキーマ (SampleSchema1.xml)

<?xml version="1.0"?>
<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" />
      <sql:relationship name="OrderOrderDetail"
                        parent="Sales.SalesOrderHeader"
                        parent-key="SalesOrderID"
                        child="Sales.SalesOrderDetail"
                        child-key="SalesOrderID" />
    </xsd:appinfo>
  </xsd:annotation>

  <xsd:element name="Customer" sql:relation="Sales.Customer" type="CustomerType" />

  <xsd:complexType name="CustomerType" >
     <xsd:sequence>
        <xsd:element name="Order" 
                     sql:relation="Sales.SalesOrderHeader"
                     sql:relationship="CustOrders" />
     </xsd:sequence>
     <xsd:attribute name="CustomerID" type="xsd:ID"/>
     <xsd:attribute name="TerritoryID"/>
     <xsd:attribute name="AccountNumber"/>
     <xsd:attribute name="CustomerType"/>
     <xsd:attribute name="Orders" type="xsd:IDREFS" sql:prefix="Ord-"/>
  </xsd:complexType>

  <xsd:element name="Order" sql:relation="Sales.SalesOrderHeader" type="OrderType"/>
  
  <xsd:complexType name="OrderType">
     <xsd:sequence>
        <xsd:element name="OrderDetail" 
                     sql:relation="Sales.SalesOrderDetail"
                     sql:relationship="OrderOrderDetail" />
     </xsd:sequence>
     <xsd:attribute name="SalesOrderID" type="xsd:ID" sql:prefix="Ord-"/>
     <xsd:attribute name="SalesPersonID"/>
     <xsd:attribute name="OrderDate"/>
     <xsd:attribute name="DueDate"/>
     <xsd:attribute name="ShipDate"/>
  </xsd:complexType>
     
  <xsd:element name="OrderDetail" sql:relation="Sales.SalesOrderDetail" type="OrderDetailType"/>

  <xsd:complexType name="OrderDetailType">
    <xsd:attribute name="ProductID" type="xsd:IDREF"/>
    <xsd:attribute name="UnitPrice"/>
    <xsd:attribute name="OrderQty"/>
    <xsd:attribute name="UnitPriceDiscount"/>
  </xsd:complexType>

  <xsd:element name="UnitPriceDiscount" sql:relation="Sales.SalesOrderDetail" type="DiscountType"/>

  <xsd:complexType name="DiscountType">
    <xsd:simpleContent>
       <xsd:extension base="xsd:string">
          <xsd:anyAttribute namespace="##other" processContents="lax"/>
       </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:element name="Contact" sql:relation="Person.Contact" type="ContactType"/>
   
  <xsd:complexType name="ContactType">
    <xsd:attribute name="ContactID"/>
    <xsd:attribute name="LastName"/>
    <xsd:attribute name="FirstName"/>
    <xsd:attribute name="Title"/>
  </xsd:complexType>

</xsd:schema>