Udostępnij przez


Określanie osie w kwerendach XPath (SQLXML 4.0)

Poniższe przykłady pokazują, jak podano w kwerendach XPath osi.

Kwerendy XPath w tych przykładach określono schematem mapowania zawartych w SampleSchema1.xml.Aby uzyskać informacje dotyczące tego schematu próbki, zobacz Próbki adnotacje schematu XSD przykłady XPath (SQLXML 4.0).

Przykłady

A.Pobieranie elementów podrzędność węzła kontekstowego

Następująca kwerenda XPath zaznacza wszystkie <osoby> elementy podrzędność węzła kontekstowego:

/child::Person

W kwerendzie child jest osią i Contact jest test węzłów (PRAWDA, jeśli Person jest <elementu> węzła, ponieważ <elementu> jest skojarzony typ węzła głównego z child oś).

child Oś jest domyślna.Dlatego kwerenda może być zapisany jako:

/Person

Aby przetestować kwerendę XPath schematem mapowania

  1. Copy Kod przykładowy schemat 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">
        /Person
      </sql:xpath-query>
    </ROOT>
    

    Ścieżka katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

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

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Oto częściowe zestaw wyników wykonania szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<Person BusinessEntityID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />

<Person BusinessEntityID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />

<Person BusinessEntityID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />

<Person BusinessEntityID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />

...

</ROOT>

B.Pobrać grandchildren węzła kontekstowego

Następująca kwerenda XPath zaznacza wszystkie <zamówienia> elementy podrzędne elementu <klienta> elementy podrzędne elementu Węzeł kontekstu:

/child::Customer/child::Order

W kwerendzie child jest osią i Customer i Order są testów węźle (tych testów węźle mają wartość PRAWDA, jeśli klienta i zamówienia są <elementu> węzły, ponieważ <elementu> węzeł jest węzłem podstawowy dla child oś).Dla każdego węzła dopasowywania <klienta>, węzłów pasujących <zamówienia> są dodawane do wyników.Tylko <zamówienia> jest zwracany zestaw wyników.

child Oś jest domyślna.Dlatego też kwerenda może być określona jako:

/Customer/Order

Aby przetestować kwerendę XPath schematem mapowania

  1. Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleB.xml) i zapisz 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>
    

    Ścieżka katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

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

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Oto częściowe zestaw wyników wykonania szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<Order SalesOrderID="Ord-43860" SalesPersonID="280"

OrderDate="2005-08-01T00:00:00"

DueDate="2005-08-13T00:00:00"

ShipDate="2005-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 kwerenda XPath jest określony jako Customer/Order/OrderDetail, z każdego węzła dopasowywania <klienta> kwerenda przechodzi do jego <zamówienia> elementów.I dla każdego węzła dopasowywania <zamówienia>, kwerenda dodaje węzły <OrderDetail> na wynik.Tylko <OrderDetail> jest zwracany zestaw wyników.

C.Use ..to specify the parent axis

Następująca kwerenda pobiera wszystkie <zamówienia> elementów z elementem nadrzędnym <klienta> element z IDklienta atrybut wartość 1.W kwerendzie użyto child oś w predykacie, aby znaleźć element nadrzędny <zamówienia> elementu.

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

child Oś jest domyślnie osi.Dlatego też kwerenda może być określona jako:

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

Kwerendy XPath jest równoważne:

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

Ostrzeżenie

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 konsekwencji <zamówienia> jest traktowana jako typ elementu najwyższego poziom w dokumencie.

Aby przetestować kwerendę XPath schematem mapowania

  1. Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.

  2. Utwórz następujący szablon (XPathAxesSampleC.xml) i zapisz 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>
    

    Ścieżka katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

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

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Oto częściowe zestaw wyników wykonania szablonu:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<Order SalesOrderID="Ord-43860" SalesPersonID="280"

OrderDate="2005-08-01T00:00:00"

DueDate="2005-08-13T00:00:00"

ShipDate="2005-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śl oś, atrybut

Następująca kwerenda XPath zaznacza wszystkie <klienta> elementy podrzędność węzła kontekstowego z IDklienta atrybut na wartość 1:

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

W predykacie attribute::CustomerID, attribute jest osią i CustomerID jest test węzłów (jeśli CustomerID jest atrybut testu węzła jest TRUE, ponieważ <atrybut> węzeł jest węzłem podstawowy dla attribute oś).

Skrót do attribute osi (@) można określić, ponieważ child jest oś domyślne mogą być pominięte z kwerendy:

/Customer[@CustomerID="1"]

Aby przetestować kwerendę XPath schematem mapowania

  1. Copy Kod przykładowy schemat 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 zapisane 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>
    

    Ścieżka katalogu określonego dla mapowania schematu (SampleSchema1.xml) jest katalog, w którym zapisany szablon.Ścieżka bezwzględna również można określić, na przykład:

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

    Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Oto częściowe zestaw wyników wykonania 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="2005-08-01T00:00:00"

DueDate="2005-08-13T00:00:00"

ShipDate="2005-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>