Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Poniższe przykłady pokazują, jak operatory relacyjne są określane w zapytaniach XPath. Zapytania XPath w tych przykładach są określone względem schematu odwzorowania zawartego w SampleSchema1.xml. Aby uzyskać informacje o tym przykładowym schemacie, zobacz Przykładowy annotowany schemat XSD dla przykładów XPath (SQLXML 4.0).
Przykłady
A. Określ operator relacyjny
To zapytanie XPath zwraca elementy potomne elementu <Customer> , gdzie wartość atrybutu CustomerID wynosi "1", a każde podczele <Order> zawiera potomstwo <OrderDetail> z atrybutem OrderQty o wartości większej niż 3:
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Predykat określony w nawiasach filtruje <elementy klienta> . Zwracane są tylko <elementy Klienta> , które mają przynajmniej jednego <wnuka OrderDetail> z wartością atrybutu OrderQty większą niż 3.
Oś potomna jest domyślna. Dlatego zapytanie można określić jako:
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Aby przetestować zapytanie XPath względem schematu mapowania
Skopiuj przykładowy kod schematu i wklej go do pliku tekstowego. Zapisz plik jako SampleSchema1.xml.
Stwórz następujący szablon (SpecifyRelationalA.xml) i zapisz go w katalogu, gdzie SampleSchema1.xml jest zapisany.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3] </sql:xpath-query> </ROOT>Ścieżka katalogu określona dla schematu mapowania (SampleSchema1.xml) jest względna względem katalogu, w którym zapisany jest szablon. Można również określić ścieżkę bezwzględną, na przykład:
mapping-schema="C:\MyDir\SampleSchema1.xml"Utworzenie i użycie testowego skryptu SQLXML 4.0 (Sqlxml4test.vbs) do wykonania szablonu.
Aby uzyskać więcej informacji, zobacz Using ADO to Execute SQLXML 4.0 Queries (Używanie narzędzia ADO do wykonywania zapytań SQLXML 4.0).
Oto zestaw wyników wykonania szablonu:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" />
</ROOT>
B. Określ operator relacyjny w zapytaniu XPath i użyj funkcji Boole'a do porównania wyniku
To zapytanie zwraca wszystkie potomki <elementów Order> węzła kontekstowego, których wartość atrybutu SalesPersonID jest mniejsza niż 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
Można określić skrót do osi atrybutu (@), a ponieważ oś potomna jest domyślna, można ją pominąć w zapytaniu:
/Customer/Order[(@SalesPersonID < 270)=true()]
Uwaga / Notatka
Gdy to zapytanie jest określone w szablonie, znak < musi być zakodowany jako jednostka, ponieważ znak < ten ma specjalne znaczenie w dokumencie XML. W szablonie użyj do < określenia znaku < .
Aby przetestować zapytanie XPath względem schematu mapowania
Skopiuj przykładowy kod schematu i wklej go do pliku tekstowego. Zapisz plik jako SampleSchema1.xml.
Stwórz następujący szablon (SpecifyRelationalB.xml) i zapisz go w katalogu, gdzie SampleSchema1.xml jest zapisany.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[(@SalesPersonID<270)=true()] </sql:xpath-query> </ROOT>Ścieżka katalogu określona dla schematu mapowania (SampleSchema1.xml) jest względna względem katalogu, w którym zapisany jest szablon. Można również określić ścieżkę bezwzględną, na przykład:
mapping-schema="C:\MyDir\SampleSchema1.xml"Utworzenie i użycie testowego skryptu SQLXML 4.0 (Sqlxml4test.vbs) do wykonania szablonu.
Aby uzyskać więcej informacji, zobacz Using ADO to Execute SQLXML 4.0 Queries (Używanie narzędzia ADO do wykonywania zapytań SQLXML 4.0).
Oto częściowy zestaw wyników wykonania szablonu:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-46613" SalesPersonID="268"
OrderDate="2002-07-01T00:00:00"
DueDate="2002-07-13T00:00:00"
ShipDate="2002-07-08T00:00:00">
<OrderDetail ProductID="Prod-739" UnitPrice="917.9363"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-779" UnitPrice="1491.4221"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-825" UnitPrice="242.1391"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
<Order SalesOrderID="Ord-71919" SalesPersonID="268"
OrderDate="2004-06-01T00:00:00"
DueDate="2004-06-13T00:00:00"
ShipDate="2004-06-08T00:00:00">
<OrderDetail ProductID="Prod-961" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-965" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-966" UnitPrice="1716.5304"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>