Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
De volgende voorbeelden laten zien hoe assen worden gespecificeerd in XPath-zoekopdrachten.
De XPath-queries in deze voorbeelden zijn gespecificeerd tegen het mappingschema dat in SampleSchema1.xmlis opgenomen. Voor informatie over dit voorbeeldschema, zie Voorbeeld Geannoteerd XSD-schema voor XPath-voorbeelden (SQLXML 4.0).
Voorbeelden
Eén. Haal kindelementen van de contextknoop op
De volgende XPath-query selecteert alle <Contact-kindelementen> van de contextknoop:
/child::Contact
In de query child is de as en Contact is de knooptest (WAAR als Contact een <elementknoop> is, omdat <het element> het primaire knooptype is dat aan de child as is gekoppeld).
De child as is de standaard. Daarom kan de query worden geschreven als:
/Contact
Om de XPath-query te testen tegen het mappingschema
Kopieer de voorbeeldschemacode en plak deze in een tekstbestand. Sla het bestand op als SampleSchema1.xml.
Maak het volgende sjabloon aan (XPathAxesSampleA.xml) en sla het op in de map waar SampleSchema1.xml is opgeslagen.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </sql:xpath-query> </ROOT>Het directorypad dat voor het mappingschema (SampleSchema1.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\MyDir\SampleSchema1.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Hier is de gedeeltelijke resultaatset van de template-uitvoering:
<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. Kleinkinderen van de contextknoop ophalen
De volgende XPath-query selecteert alle <Order-element> kinderen van de <Customer-element> kinderen van de contextknoop:
/child::Customer/child::Order
In de query child is de as en CustomerOrder en zijn de knooppunttests (deze knooppunttests zijn WAAR als Klant en Order elementknooppunten> zijn<, omdat de <elementknoop> de primaire knoop is voor de kindas). Voor elke knoop die overeenkomt< met Klant>, worden de knooppunten die overeenkomen <met Orders> aan het resultaat toegevoegd. Alleen <Order> wordt teruggegeven in de resultaatset.
De kindas is de standaard. Daarom kan de query worden gespecificeerd als:
/Customer/Order
Om de XPath-query te testen tegen het mappingschema
Kopieer de voorbeeldschemacode en plak deze in een tekstbestand. Sla het bestand op als SampleSchema1.xml.
Maak de volgende template aan (XPathAxesSampleB.xml) en sla deze op in de map waar:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </sql:xpath-query> </ROOT>Het directorypad dat voor het mappingschema (SampleSchema1.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\MyDir\SampleSchema1.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Hier is de gedeeltelijke resultaatset van de template-uitvoering:
<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>
Als de XPath-query is gespecificeerd als Customer/Order/OrderDetail, navigeert de query van elke knoop die overeenkomt< met de klant> naar zijn <Order-elementen>. En voor elke knoop die met Order> overeenkomt<, voegt de query de knoop< OrderDetail> toe aan het resultaat. Alleen <OrderDetail> wordt teruggegeven in de resultaatset.
C. Gebruiken.. om de ouderas te specificeren
De volgende query haalt <alle Order-elementen> op met een ouder <Customer-element> met een CustomerID-attribuutwaarde van 1. De query gebruikt de kindas in het predicaat om de ouder van het <Order-element> te vinden.
/child::Customer/child::Order[../@CustomerID="1"]
De kindas is de standaardas. Daarom kan de query worden gespecificeerd als:
/Customer/Order[../@CustomerID="1"]
De XPath-query is gelijkwaardig aan:
/Customer[@CustomerID="1"]/Order.
Opmerking
De XPath-query /Order[../@CustomerID="1"] geeft een foutmelding omdat er geen ouder van <Order> is. Hoewel er elementen in het mapping schema kunnen zijn die Order> bevatten<, begon de XPath niet bij een van hen; daarom <wordt Order> beschouwd als het topniveau elementtype in het document.
Om de XPath-query te testen tegen het mappingschema
Kopieer de voorbeeldschemacode en plak deze in een tekstbestand. Sla het bestand op als SampleSchema1.xml.
Maak de volgende template aan (XPathAxesSampleC.xml) en sla deze op in de map waar:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </sql:xpath-query> </ROOT>Het directorypad dat voor het mappingschema (SampleSchema1.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\MyDir\SampleSchema1.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Hier is de gedeeltelijke resultaatset van de template-uitvoering:
<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. Specificeer de attribuutas
De volgende XPath-query selecteert alle <Customer-kindelementen> van de contextknoop met een CustomerID-attribuutwaarde van 1:
/child::Customer[attribute::CustomerID="1"]
In het predicaat attribute::CustomerIDis de attribute as en CustomerID is de knooptest (als CustomerID een attribuut is, is de knooppunttest WAAR, omdat het <attribuutknooppunt> de primaire knoop voor de attribute as is).
Een snelkoppeling naar de attribute as (@) kan worden gespecificeerd, en omdat child het de standaardas is, kan deze uit de zoekopdracht worden weggelaten:
/Customer[@CustomerID="1"]
Om de XPath-query te testen tegen het mappingschema
Kopieer de voorbeeldschemacode en plak deze in een tekstbestand. Sla het bestand op als SampleSchema1.xml.
Maak de volgende template aan (XPathAxesSampleD.xml) en sla deze op in de map waar SampleSchema1.xml is opgeslagen.
<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>Het directorypad dat voor het mappingschema (SampleSchema1.xml) is gespecificeerd is relatief tot de map waar het sjabloon wordt opgeslagen. Een absoluut pad kan ook worden gespecificeerd, bijvoorbeeld:
mapping-schema="C:\MyDir\SampleSchema1.xml"Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het sjabloon uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Hier is de gedeeltelijke resultaatset van de template-uitvoering:
<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>