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
Kopia Przykładowy kod schematu 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"> /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"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
Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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
Kopia Przykładowy kod schematu i wkleić go do pliku tekstowego.Zapisz plik jako SampleSchema1.xml.
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"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
Kopia Przykładowy kod schematu 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 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"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>