Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Database
Následující příklady ukazují, jak jsou v dotazech XPath specifikovány booleovské predikáty. XPath dotazy v těchto příkladech jsou specifikovány vůči mapovacímu schématu obsaženému v SampleSchema1.xml. Pro informace o tomto ukázkovém schématu viz Ukázka anotovaného XSD schématu pro příklady XPath (SQLXML 4.0).
Examples
A. Specifikujte více predikátů
Následující dotaz XPath používá více predikátů k nalezení informací o objednávce pro dané ID objednávky a ID zákazníka:
/child::Customer[attribute::CustomerID="1"]/child::Order[attribute::OrderID="Ord-43860"]
Lze zadat zkratku na attribute osu (@), a protože osa child je výchozí, lze ji z dotazu vynechat:
/Customer[@CustomerID="1"]/Order[@SalesOrderID="Ord-43860"]
Otestování dotazu XPath proti mapovacímu schématu
Zkopírujte ukázkový kód schématu a vložte ho do textového souboru. Uložte soubor jako SampleSchema1.xml.
Vytvořte následující šablonu (BooleanValuedPredicatesA.xml) a uložite ji do adresáře, kde se SampleSchema1.xml ukládá.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[@CustomerID="1"]/Order[@SalesOrderID="Ord-43860"] </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (SampleSchema1.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\MyDir\SampleSchema1.xml"Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.
Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Zde je výsledek:
<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>
B. Specifikujte po sobě jdoucí a vnořené predikáty
Následující dotaz ukazuje použití postupných predikátů. Dotaz vrací všechny <potomky klienta> v kontextovém uzlu, které mají jak atribut SalesPersonID s hodnotou 277, tak atribut TerritoryID s hodnotou 3:
/child::Customer[attribute::SalesPersonID="277"][attribute::TerritoryID="3"]
Dotaz vrací <prvky zákazníka> , které splňují obě podmínky uvedené v predikátech.
Lze zadat zkratku na atributovou osu (@) a protože je výchozí osa dítěte , lze ji z dotazu vynechat:
/Customer[@SalesPersonID="277"][@TerritoryID="3"]
Následující dotaz XPath ilustruje použití vnořených predikátů. Dotaz vrací všechny <potomky Zákazníka> v kontextovém uzlu, které zahrnují <podprvky Objednávky> , přičemž alespoň jeden <prvek Objednávky> má hodnotu atributu SalesPersonID 2.
/Customer[Order[@SalesPersonID=2]]
Otestování dotazu XPath proti mapovacímu schématu
Zkopírujte ukázkový kód schématu a vložte ho do textového souboru. Uložte soubor jako SampleSchema1.xml.
Vytvořte následující šablonu (nestedSuccessive.xml) a uložite ji do adresáře, kde se SampleSchema1.xml ukládá.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[@SalesPersonID="277"][@TerritoryID="3"] </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (SampleSchema1.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\MyDir\SampleSchema1.xml"Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.
Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Následuje částečný výsledek:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Customer CustomerID="22" SalesPersonID="277" TerritoryID="3"
AccountNumber="22" CustomerType="S"
Orders="Ord-43874 Ord-44519 Ord-46989 Ord-48013 Ord-49130 Ord-50274 Ord-51807 Ord-57113 Ord-63162 Ord-69495">
<Order SalesOrderID="Ord-43874" SalesPersonID="277"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</Customer>
<Customer CustomerID="39" SalesPersonID="277" TerritoryID="3"
AccountNumber="39" CustomerType="S"
Orders="Ord-47428 Ord-48367 Ord-49529 Ord-50742 Ord-53591 Ord-59051 Ord-65301 Ord-71912"> <Order SalesOrderID="Ord-47428" SalesPersonID="277"
OrderDate="2002-09-01T00:00:00"
DueDate="2002-09-13T00:00:00"
ShipDate="2002-09-08T00:00:00">
<OrderDetail ProductID="Prod-759" UnitPrice="563.7528" OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-769" UnitPrice="563.7528" OrderQty="1" UnitPriceDiscount="0" />
...
</Order>
...
</Customer>
...
</ROOT>
C. Specifikujte predikát nejvyšší úrovně
Následující dotaz vrací <uzly podprvku zákazníka> kontextového uzlu, které mají <potomky prvků Order> . Dotaz testuje cestu k umístění jako predikát nejvyšší úrovně:
/child::Customer[child::Order]
Výchozí je podřízená osa. Dotaz tedy lze specifikovat jako:
/Customer[Order]
Otestování dotazu XPath proti mapovacímu schématu
Zkopírujte ukázkový kód schématu a vložte ho do textového souboru. Uložte soubor jako SampleSchema1.xml.
Vytvořte následující šablonu (TopLevelPredicate.xml) a uložite ji do adresáře, kde se SampleSchema1.xml ukládá.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[Order] </sql:xpath-query> </ROOT>Adresářová cesta určená pro mapovací schéma (SampleSchema1.xml) je relativní k adresáři, ve kterém je šablona uložena. Absolutní cestu lze také specifikovat, například:
mapping-schema="C:\MyDir\SampleSchema1.xml"Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k provedení šablony.
Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.
Zde je částečný výsledek:
<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>
<Order SalesOrderID="Ord-44501" SalesPersonID="280" OrderDate="2001-11-01T00:00:00" DueDate="2001-11-13T00:00:00" ShipDate="2001-11-08T00:00:00">
<OrderDetail ProductID="Prod-725" UnitPrice="226.8571" OrderQty="3" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-726" UnitPrice="226.8571" OrderQty="2" UnitPriceDiscount="0" />
...
</Order> ...
</Customer>
...
</ROOT>