Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Följande exempel visar hur relationsoperatorer specificeras i XPath-frågor. XPath-frågorna i dessa exempel specificeras mot mappningsschemat som finns i SampleSchema1.xml. För information om detta exempelschema, se Exempel annoterat XSD-schema för XPath-exempel (SQLXML 4.0).
Examples
A. Specificera relationsoperatorn
Denna XPath-fråga returnerar barn-elementen i Customer-elementet<> där CustomerID-attributvärdet är "1" och där eventuella under-Order-element<> innehåller ett <OrderDetail-barn> med ett OrderQty-attribut med ett värde större än 3:
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Predikatet som anges inom parentesen filtrerar <kundelementen> . Endast de< Kundelement> som har minst ett <OrderDetail-barnbarn> med ett OrderQty-attributvärde högre än 3 returneras.
Barnaxeln är standard. Därför kan frågan specificeras som:
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
För att testa XPath-frågan mot mappningsschemat
Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.
Skapa följande mall (SpecifyRelationalA.xml) och spara den i katalogen där SampleSchema1.xml sparas.
<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>Den katalogväg som anges för mappningsschemat (SampleSchema1.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:
mapping-schema="C:\MyDir\SampleSchema1.xml"Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.
Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.
Här är resultatuppsättningen för mallexekveringen:
<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. Specificera relationsoperatorn i XPath-frågan och använd boolesk funktion för att jämföra resultatet
Denna fråga returnerar alla <Order-elementbarn> till kontextnoden som har ett SalesPersonID-attributvärde som är mindre än 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
En genväg till attributaxeln (@) kan specificeras, och eftersom barnaxeln är standarden kan den utelämnas från frågan:
/Customer/Order[(@SalesPersonID < 270)=true()]
Anmärkning
När denna fråga specificeras i en mall måste tecknet < vara entitetskodat eftersom tecknet < har en särskild betydelse i ett XML-dokument. I en mall, använd < för att specificera karaktären < .
För att testa XPath-frågan mot mappningsschemat
Kopiera exempelschemakoden och klistra in den i en textfil. Spara filen som SampleSchema1.xml.
Skapa följande mall (SpecifyRelationalB.xml) och spara den i katalogen där SampleSchema1.xml sparas.
<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>Den katalogväg som anges för mappningsschemat (SampleSchema1.xml) är relativ till katalogen där mallen sparas. En absolut väg kan också specificeras, till exempel:
mapping-schema="C:\MyDir\SampleSchema1.xml"Skapa och använd SQLXML 4.0 Test Script (Sqlxml4test.vbs) för att köra mallen.
Mer information finns i Använda ADO för att köra SQLXML 4.0-frågor.
Här är den delvisa resultatuppsättningen för mallens exekvering:
<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>