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
Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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
Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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
Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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
Copy Kod przykładowy schemat i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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>