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 relační operátory 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. Specifikujte relační operátor
Tento dotaz XPath vrací podřízené prvky elementu <Customer> , kde hodnota atributu CustomerID je "1" a kde jakýkoli podřízený <Order> Order obsahuje potomka <OrderDetail> s atributem OrderQty s hodnotou větší než 3:
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Predikát uvedený v závorkách filtruje <prvky zákazníka> . <Pouze prvky zákazníka>, které mají alespoň jednoho <vnuka OrderDetail> s hodnotou atributu OrderQty větší než 3, se vracejí.
Výchozí je podřízená osa. Dotaz tedy lze specifikovat jako:
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
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 (SpecifyRelationalA.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/OrderDetail[@OrderQty > 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.
Zde je výsledná sada provedení šablony:
<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. Specifikujte relační operátor v dotazu XPath a použijte Booleovu funkci k porovnání výsledku
Tento dotaz vrací všechny potomky <prvků Order> kontextového uzlu, které mají hodnotu atributu SalesPersonID menší než 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
Lze zadat zkratku na atributovou osu (@) a protože je výchozí osa dítěte , lze ji z dotazu vynechat:
/Customer/Order[(@SalesPersonID < 270)=true()]
Poznámka:
Když je tento dotaz zadán v šabloně, musí být znak < zakódován jako entita, protože znak < má v XML dokumentu zvláštní význam. V šabloně použijte < k určení < znaku.
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 (SpecifyRelationalB.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[(@SalesPersonID<270)=true()] </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-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>