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 tonen aan hoe relationele operatoren worden gespecificeerd in XPath-query's. 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. Specificeer de relationele operator
Deze XPath-query geeft de kindelementen van het <Customer-element> terug waarbij de CustomerID-attribuutwaarde "1" is en wanneer eventuele kind-Order-elementen<> een <OrderDetail-kind> bevatten met een OrderQty-attribuut met een waarde groter dan 3:
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Het predicaat dat tussen haakjes wordt gespecificeerd, filtert de <Klant-elementen> . Alleen de <Customer-elementen> die ten minste één <OrderDetail-kleinkind> hebben met een OrderQty-attribuutwaarde groter dan 3 worden teruggegeven.
De kindas is de standaard. Daarom kan de query worden gespecificeerd als:
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
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 (SpecifyRelationalA.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"> /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3] </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 resultaatset van de template-uitvoering:
<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. Specificeer de relationele operator in de XPath-query en gebruik de Booleaanse functie om het resultaat te vergelijken
Deze query geeft alle <Order-elementen> kinderen van de contextknoop terug die een SalesPersonID-attribuut hebben die kleiner is dan 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
Een snelkoppeling naar de attribuutas (@) kan worden gespecificeerd, en omdat de kindas de standaard is, kan deze uit de zoekopdracht worden weggelaten:
/Customer/Order[(@SalesPersonID < 270)=true()]
Opmerking
Wanneer deze query in een sjabloon wordt gespecificeerd, moet het < teken entiteit-gecodeerd zijn omdat het < teken een speciale betekenis heeft in een XML-document. Gebruik in een sjabloon < om het < personage te specificeren.
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 (SpecifyRelationalB.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"> /Customer/Order[(@SalesPersonID<270)=true()] </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-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>