Udostępnij przez


Określanie osie w kwerendach XPath (SQLXML 4.0)

Następujące przykłady pokazują, jak określono w kwerendach XPath osi.

Kwerendy XPath w tych przykładach określone względem schematu mapowania zawartych w SampleSchema1.xml.Aby uzyskać informacje na temat tego schematu przykładowych zobacz Przykładowe odnotowany schematu XSD dla przykłady XPath (SQLXML 4.0).

Przykłady

A.Pobierz elementy podrzędność węzła kontekstu

W następującej kwerendzie XPath powoduje zaznaczenie wszystkich <Kontakt> elementy podrzędność węzła kontekstu:

/child::Contact

W kwerendzie child jest na osi i Contact test węzła (PRAWDA, jeśli jest Contact to <element> węzeł, ponieważ <element> Typ węzeł główny jest skojarzony z child oś).

The child oś is the default. Dlatego też kwerendy mogą być zapisywane jako:

/Contact

Aby przetestować kwerendę XPath schematem mapowania

  1. Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleA.xml) i zapisz go w katalogu, w którym zapisano SampleSchema1.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Contact
      </sql:xpath-query>
    </ROOT>
    

    To ścieżka do katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\SampleSchema1.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych wykonanie szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." /> 
  <Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." /> 
  <Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." /> 
  <Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
  ...
</ROOT>

B.Pobieranie grandchildren węzeł kontekstu

W następującej kwerendzie XPath powoduje zaznaczenie wszystkich <Zamówienia> elementy podrzędne elementu <Odbiorcy> element elementy podrzędne węzła kontekstu:

/child::Customer/child::Order

W kwerendzie child jest na osi i Customer i Order są testy węzła (tych testów węzła mają wartość PRAWDA w przypadku nabywców i zamówienia <element> węzły, ponieważ <element> węzeł jest węzeł główny child oś). Do każdego węzła dopasowania <Odbiorcy>, węzły, dopasowywanie <Zamówienia> są dodawane do wyników. Tylko <Zamówienia> jest zwracany zestaw wyników.

The child oś is the default. W efekcie kwerenda może być określony jako:

/Customer/Order

Aby przetestować kwerendę XPath schematem mapowania

  1. Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleB.xml) i zapisać go w katalogu, gdzie:

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        /Customer/Order
      </sql:xpath-query>
    </ROOT>
    

    To ścieżka do katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\SampleSchema1.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych wykonanie szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order SalesOrderID="Ord-43860" SalesPersonID="280" 
         OrderDate="2001-08-01T00:00:00" 
         DueDate="2001-08-13T00:00:00" 
         ShipDate="2001-08-08T00:00:00">
  <OrderDetail ProductID="Prod-729" UnitPrice="226.8571" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-738" UnitPrice="220.2496" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-753" UnitPrice="2576.3544" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-756" UnitPrice="1049.7528" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-758" UnitPrice="1049.7528" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-761" UnitPrice="503.3507" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-762" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-765" UnitPrice="503.3507" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-768" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-770" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  </Order>
   ...
</ROOT>

Jeśli kwerendy XPath jest określony jako Customer/Order/OrderDetail, z każdego węzła dopasowywania <Odbiorcy> kwerenda przechodzi do jego <Zamówienia> elementy. I dla każdego węzła dopasowania <Zamówienia>, kwerendy dodaje węzły <OrderDetail> do wyniku. Tylko <OrderDetail> jest zwracany zestaw wyników.

C.Use ..to specify the parent axis

Następująca kwerenda pobiera wszystkie <Zamówienia> elementy z obiektu nadrzędnego <Odbiorcy> element z Identyfikator klienta wartość atrybut 1. W kwerendzie użyto child oś w predykacie, aby znaleźć element nadrzędny <Zamówienia> element.

/child::Customer/child::Order[../@CustomerID="1"]

The child oś is the default oś. W efekcie kwerenda może być określony jako:

/Customer/Order[../@CustomerID="1"]

Kwerendy XPath jest równa:

/Customer[@CustomerID="1"]/Order.

Uwaga

Kwerendy XPath /Order[../@CustomerID="1"] zwróci błąd, ponieważ nie element nadrzędny <Zamówienia>. Chociaż mogą być elementami w schemacie mapowania, które zawierają <Zamówienia>, wyrażenie XPath nie pojawił się na każdym z nich; w rezultacie <Zamówienia> jest uważana za typu element najwyższego poziom w dokumencie.

Aby przetestować kwerendę XPath schematem mapowania

  1. Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleC.xml) i zapisać go w katalogu, gdzie:

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

    To ścieżka do katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\SampleSchema1.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych wykonanie szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order SalesOrderID="Ord-43860" SalesPersonID="280" 
         OrderDate="2001-08-01T00:00:00" 
         DueDate="2001-08-13T00:00:00" 
         ShipDate="2001-08-08T00:00:00">
  <OrderDetail ProductID="Prod-729" UnitPrice="226.8571" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-738" UnitPrice="220.2496" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-753" UnitPrice="2576.3544" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-756" UnitPrice="1049.7528" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-758" UnitPrice="1049.7528" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-761" UnitPrice="503.3507" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-762" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-763" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-765" UnitPrice="503.3507" 
               OrderQty="2" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-768" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  <OrderDetail ProductID="Prod-770" UnitPrice="503.3507" 
               OrderQty="1" UnitPriceDiscount="0" /> 
  </Order>
   ...
</Order>
</ROOT>

D.Określanie atrybut oś

W następującej kwerendzie XPath powoduje zaznaczenie wszystkich <Odbiorcy> elementy podrzędność węzła kontekstu z Identyfikator klienta wartość atrybut 1:

/child::Customer[attribute::CustomerID="1"]

W predykacie attribute::CustomerID, attribute jest na osi i CustomerID jest to test węzła (Jeśli CustomerID jest atrybutem test węzła ma wartość PRAWDA, ponieważ <atrybut> węzeł jest węzeł główny attribute oś).

Skrót do attribute można określić oś (@), a ponieważ child jest osią domyślne można pominąć z kwerendy:

/Customer[@CustomerID="1"]

Aby przetestować kwerendę XPath schematem mapowania

  1. Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleD.xml) i zapisz go w katalogu, w którym zostanie zapisana SampleSchema1.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="SampleSchema1.xml">
        child::Customer[attribute::CustomerID="1"]
      </sql:xpath-query>
    </ROOT>
    

    To ścieżka do katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest względna w stosunku do katalogu, w którym są zapisywane w szablonie.Ścieżka bezwzględna również można określić, na przykład:

    mapping-schema="C:\MyDir\SampleSchema1.xml"
    
  3. Tworzenie i używanie skryptu testu 4.0 SQLXML (Sqlxml4test.vbs) do wykonać tego szablonu.

    Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

W tym polu jest zestaw wyników częściowych wykonanie szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="1" SalesPersonID="280" 
            TerritoryID="1" AccountNumber="1" 
            CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
    <Order SalesOrderID="Ord-43860" SalesPersonID="280" 
           OrderDate="2001-08-01T00:00:00" 
           DueDate="2001-08-13T00:00:00" 
           ShipDate="2001-08-08T00:00:00">
       <OrderDetail ProductID="Prod-729" UnitPrice="226.8571" 
                    OrderQty="1" UnitPriceDiscount="0" /> 
       <OrderDetail ProductID="Prod-732" UnitPrice="440.1742" 
                    OrderQty="1" UnitPriceDiscount="0" /> 
       <OrderDetail ProductID="Prod-738" UnitPrice="220.2496" 
                    OrderQty="1" UnitPriceDiscount="0" /> 
      ... 
    </Order>
   ...
  </Customer>
</ROOT>