Delen via


Inleiding tot het gebruik van XPath-queries (SQLXML 4.0)

Van toepassing op:SQL ServerAzure 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.

Zie ook

Gebruik van XPath-queries in SQLXML 4.0