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 osy specifikovány v dotazech XPath.
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. Získejte podřízené prvky kontextového uzlu
Následující dotaz XPath vybírá všechny <podprvky Kontaktů> kontextového uzlu:
/child::Contact
V dotazu child je osa a Contact je test uzlu (PRAVDA, pokud Contact je <uzel prvku> , protože <prvek> je primární typ uzlu přiřazený child k ose).
Osa child je výchozí. Dotaz tedy lze zapsat jako:
/Contact
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 (XPathAxesSampleA.xml) a uložite ji do adresáře, kde byl SampleSchema1.xml uložen.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </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 množina částečných výsledků provedení šablony:
<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. Získejte vnoučata kontextového uzlu
Následující dotaz XPath vybírá všechny potomky <prvků Order> z potomků Customer elementů <> kontextového uzlu:
/child::Customer/child::Order
V dotazu child je osa a Customer a Order jsou testy uzlů (tyto testy uzlů jsou PRAVDIVÉ, pokud jsou<> Customer a Order prvky uzlů, protože uzel <elementu> je primárním uzlem pro podosu). Pro každý uzel shodující <se se zákazníkem> se do výsledku přičtou uzly <odpovídající objednávkám> . V množině výsledků se vrací pouze <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 (XPathAxesSampleB.xml) a uložite ji do adresáře, kde:
<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 množina částečných výsledků provedení šablony:
<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>
Pokud je dotaz XPath zadán jako Customer/Order/OrderDetail, z každého uzlu odpovídajícího <zákazníkovi> , dotaz přejde k jeho <prvkům Objednávky> . A pro každý uzel odpovídající <Orderu> dotaz přidá OrderDetail> uzlů< do výsledku. V množině výsledků se vrací pouze< OrderDetail>.
C. Používat.. pro určení nadřazovské osy
Následující dotaz získá všechny <prvky Objednávky> s nadřazeným <prvkem Customer> s hodnotou atributu CustomerID 1. Dotaz používá dětskou osu v predikátu k nalezení rodiče prvku <Order> .
/child::Customer/child::Order[../@CustomerID="1"]
Výchozí osa je podřízená . Dotaz tedy lze specifikovat jako:
/Customer/Order[../@CustomerID="1"]
Dotaz XPath je ekvivalentní:
/Customer[@CustomerID="1"]/Order.
Poznámka:
Dotaz /Order[../@CustomerID="1"] XPath vrátí chybu, protože neexistuje žádný rodič Order<>. Ačkoli mohou být prvky v mapovacím schématu, které obsahují <Order>, XPath nezačínal u žádného z nich; proto <je Order> považován za nejvyšší typ prvku v dokumentu.
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 (XPathAxesSampleC.xml) a uložite ji do adresáře, kde:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </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 množina částečných výsledků provedení šablony:
<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. Specifikujte atributovou osu
Následující dotaz XPath vybírá všechny <podprvky CustomerID> kontextového uzlu s hodnotou atributu CustomerID 1:
/child::Customer[attribute::CustomerID="1"]
V predikátu je osa a CustomerID je test uzlu (pokud CustomerID je atribut, test uzlu je PRAVDIVÝ, protože uzel <atributu> je primárním uzlem pro osuattribute). attributeattribute::CustomerID
Lze zadat zkratku na attribute osu (@), a protože child je výchozí osou, lze ji z dotazu vynechat:
/Customer[@CustomerID="1"]
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 (XPathAxesSampleD.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"> child::Customer[attribute::CustomerID="1"] </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 množina částečných výsledků provedení šablony:
<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>