次の方法で共有


XPath クエリ内での論理演算子の指定 (SQLXML 4.0)

以下の例では、XPath クエリに論理演算子を指定する方法を示します。 この例の XPath クエリは、SampleSchema1.xml に格納されているマッピング スキーマに対して指定されます。 このサンプル スキーマの詳細については、「XPath の例で使用する注釈付き XSD スキーマのサンプル (SQLXML 4.0)」を参照してください。

使用例

A. OR 論理演算子を指定する

この XPath クエリでは、CustomerID 属性の値が 13 または 31 の、コンテキスト ノードの <Customer> 子要素が返されます。

/child::Customer[attribute::CustomerID="13" or attribute::CustomerID="31"]

attribute 軸は省略形 (@) で指定できます。また、child 軸は既定の軸なので省略できます。

/Customer[@CustomerID="13" or @CustomerID="31"]

述語では、attribute は軸で、CustomerID はノード テストです (<attribute> ノードは attribute 軸の主ノードなので、CustomerID<attribute> ノードの場合は TRUE になります)。 この述語によって <Customer> 要素がフィルター選択され、述語で指定されている条件を満たす <Customer> 要素だけが返されます。

マッピング スキーマに対して XPath クエリをテストするには

  1. サンプル スキーマ コードをコピーして、テキスト ファイルに貼り付け、 SampleSchema1.xml として保存します。

  2. 次のテンプレート (BooleanOperatorsA.xml) を作成し、SampleSchema1.xml を保存したディレクトリに保存します。

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Customer[@CustomerID="13" or @CustomerID="31"]
      </sql:xpath-query>
    </ROOT>
    

    マッピング スキーマ (SampleSchema1.xml) に指定するディレクトリ パスは、テンプレートを保存するディレクトリに対する相対パスです。 次のように、絶対パスを指定することもできます。

    mapping-schema="C:\MyDir\SampleSchema1.xml"
    
  3. SQLXML 4.0 テスト スクリプト (sqlxml4test.vbs) を作成し、それを使用してテンプレートを実行します。

    詳細については、「ADO を使用した、SQLXML 4.0 クエリの実行」を参照してください。

このテンプレートを実行した場合の結果セットは次のとおりです。

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" /> 
  <Customer CustomerID="31" SalesPersonID="286" TerritoryID="7" AccountNumber="31" CustomerType="S" Orders="Ord-51803 Ord-69427">
    <Order SalesOrderID="Ord-51803" SalesPersonID="286" OrderDate="2003-08-01T00:00:00" DueDate="2003-08-13T00:00:00" ShipDate="2003-08-08T00:00:00">
      <OrderDetail ProductID="Prod-718" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" /> 
      <OrderDetail ProductID="Prod-838" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" /> 
    </Order>
    <Order SalesOrderID="Ord-69427" SalesPersonID="286" OrderDate="2004-05-01T00:00:00" DueDate="2004-05-13T00:00:00" ShipDate="2004-05-08T00:00:00">
      <OrderDetail ProductID="Prod-835" UnitPrice="440.1742" OrderQty="1" UnitPriceDiscount="0" /> 
    </Order>
  </Customer>
</ROOT>