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
Een XML Path Language (XPath)-query kan worden gespecificeerd als onderdeel van een URL of binnen een sjabloon. Het mappingschema bepaalt de structuur van dit resulterende fragment, en de waarden worden uit de database gehaald. Dit proces lijkt conceptueel op het creëren van views met de CREATE VIEW-instructie en het schrijven van SQL-queries daartegen.
Opmerking
Om XPath-queries in SQLXML 4.0 te begrijpen, moet je bekend zijn met XML-weergaven en gerelateerde concepten zoals sjablonen en mappingschema's. Voor meer informatie, zie Introduction to Annotated XSD Schemas (SQLXML 4.0) en de XPath-standaard gedefinieerd door het World Wide Web Consortium (W3C).
Een XML-document bestaat uit knopen zoals een elementknoop, attribuutknoop, tekstknoop, enzovoort. Beschouw bijvoorbeeld dit XML-document:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
In dit document <is Customer> een elementknoop, cid een attribuutknoop, en "Belangrijk" een tekstknoop.
XPath is een grafnavigatietaal die wordt gebruikt om een set knopen uit een XML-document te selecteren. Elke XPath-operator selecteert een node-set gebaseerd op een node-set die door een eerdere XPath-operator is geselecteerd. Bijvoorbeeld, gegeven een set <Klant-knooppunten>, kan XPath alle <Order-knooppunten> selecteren met de datumattribuutwaarde "14-7-1999". De resulterende node-set bevat alle orders met orderdatum 14/7/1999.
De XPath-taal wordt door het World Wide Web Consortium (W3C) gedefinieerd als een standaard navigatietaal. SQLXML 4.0 implementeert een subset van de W3C XPath-specificatie, die zich bevindt op http://www.w3.org/TR/1999/PR-xpath-19991008.html.
De volgende zijn belangrijke verschillen tussen de W3C XPath-implementatie en de SQLXML 4.0-implementatie.
Rootqueries
SQLXML 4.0 ondersteunt de rootquery (/) niet. Elke XPath-query moet beginnen bij een topniveau <ElementType> in het schema.
Rapportagefouten
De W3C XPath-specificatie definieert geen foutvoorwaarden. XPath-queries die geen nodes selecteren, geven een lege node-set terug. In SQLXML 4.0 kan een query veel soorten foutmeldingen teruggeven.
Documentvolgorde
In SQLXML 4.0 wordt de volgorde van documenten niet altijd bepaald. Daarom zijn numerieke predicaten en assen die documentvolgorde gebruiken (zoals volgend) niet geïmplementeerd.
Het ontbreken van documentvolgorde betekent ook dat de stringwaarde van een knoop alleen kan worden geëvalueerd wanneer die knoop wordt toegewezen aan één kolom in één rij. Een element met kindelementen of een IDREFS- of NMTOKENS-knoop kan niet worden omgezet naar string.
Opmerking
In sommige gevallen kunnen de sleutelvelden-annotatie of sleutels uit de relatie-annotatie resulteren in een deterministische documentvolgorde. Dit is echter niet het primaire gebruik van deze annotaties. Voor meer informatie, zie Identifying Key Columns Using sql:key-fields (SQLXML 4.0) en Specificifying Relationships Using sql:relationship (SQLXML 4.0).
Gegevenstypen
SQLXML 4.0 heeft beperkingen bij het implementeren van de XPath-string, het aantal en de booleaanse datatypes. Voor meer informatie, zie XPath Data Types (SQLXML 4.0).
Cross-product queries
SQLXML 4.0 ondersteunt geen cross-product XPath-queries, zoals
Customers[Order/@OrderDate=Order/@ShipDate]. Deze query selecteert alle klanten met elke bestelling waarvoor de orderdatum gelijk is aan de verzenddatum van een order.SQLXML 4.0 ondersteunt echter wel queries zoals
Customer[Order[@OrderDate=@ShippedDate]], die Klanten selecteert met elke Order waarvoor de OrderDate gelijk is aan zijn ShipDate.Foutafhandeling en beveiliging
Afhankelijk van het gebruikte schema en de XPath-query-expressie kunnen Transact-SQL fouten onder bepaalde voorwaarden aan gebruikers worden blootgesteld.
De tabellen in de volgende secties geven details over hoe de implementatie van XPath-queries in SQLXML 4.0 verschilt van de W3C-specificatie in deze gebieden.
Ondersteunde functionaliteit
De volgende tabel toont de functies van de XPath-taal die zijn geïmplementeerd in SQLXML 4.0.
| Eigenschap | Artikel | Link naar voorbeeldqueries |
|---|---|---|
| Assen | attribuut,kind, ouder en zelf-bijlen | Assen specificeren in XPath-queries (SQLXML 4.0) |
| Booleaans-gewaardeerde predicaten, inclusief opeenvolgende en geneste predicaten | Het specificeren van rekenkundige operatoren in XPath-queries (SQLXML 4.0) | |
| Alle relationele operatoren | =, !=, <, <, =, >, >= | Relationele operatoren specificeren in XPath-queries (SQLXML 4.0) |
| Rekenkundige operators | +, -, *, diiv | Het specificeren van rekenkundige operatoren in XPath-queries (SQLXML 4.0) |
| Expliciete conversiefuncties | number(), string(), Booleaans() | Specificeren van expliciete conversiefuncties in XPath-queries (SQLXML 4.0) |
| Booleaanse operators | EN, OF | Het specificeren van Booleaanse operatoren in XPath-queries (SQLXML 4.0) |
| Booleaanse functies | waar(), onwaar(), niet() | Het specificeren van boolse functies in XPath-queries (SQLXML 4.0) |
| XPath-variabelen | Het specificeren van XPath-variabelen in XPath-queries (SQLXML 4.0) |
Niet-ondersteunde functionaliteit
De volgende tabel toont de functies van de XPath-taal die niet zijn geïmplementeerd in SQLXML 4.0.
| Eigenschap | Artikel |
|---|---|
| Assen | voorouder, voorouder-of-zelf, afstammeling, afstammeling-of-zelf (//),volgend, volgend-broer, naamruimte, voorgaande, voorgaande-broer of zus |
| Numeriekwaardige predicaten | |
| Rekenkundige operators | mod |
| Knoopfuncties | voorouder, voorouder-of-zelf, afstammeling, afstammeling-of-zelf (//),volgend, volgend-broer, naamruimte, voorgaande, voorgaande-broer of zus |
| Stringfuncties | string(), concat(), begint-met(), bevat(), substring-voor(), substring-na(), substring(), string-length(), normaliseren(), translate() |
| Booleaanse functies | lang() |
| Numerieke functies | som(), vloer(), plafond(), rond() |
| Vakbondsoperator | | |
Wanneer je XPath-queries in een sjabloon specificeert, let dan op het volgende gedrag:
- XPath kan tekens bevatten < zoals of & die speciale betekenissen hebben in XML (en template is een XML-document). Je moet deze tekens escapen met XML &-encoding, of de XPath in de URL specificeren.