Teilen über


Einführung in die Verwendung von XPath-Abfragen (SQLXML 4.0)

Gilt für: SQL Server Azure SQL-Datenbank

XPath (XML Path Language)-Abfragen können als Teil einer URL oder in einer Vorlage angegeben werden. Das Zuordnungsschema bestimmt die Struktur des resultierenden Fragments, und die Werte werden aus der Datenbank abgerufen. Dieser Vorgang ähnelt prinzipiell dem Erstellen von Sichten mit der CREATE VIEW-Anweisung und dem Schreiben von SQL-Abfragen für diese Sichten.

Hinweis

Um XPath-Abfragen in SQLXML 4.0 verstehen zu können, müssen Sie XML-Sichten und verwandte Konzepte wie Vorlagen und Zuordnungsschemas kennen. Weitere Informationen finden Sie in der Einführung in kommentierte XSD-Schemas (SQLXML 4.0) und den vom World Wide Web Consortium (W3C) definierten XPath-Standard.

Ein XML-Dokument besteht aus Knoten, z. B. Elementknoten, Attributknoten, Textknoten usw. Betrachten Sie z. B. folgendes XML-Dokument:

<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 diesem Dokument <ist Customer> ein Elementknoten, cid ein Attributknoten, und "Wichtig" ist ein Textknoten.

XPath ist eine Diagrammnavigationssprache, die verwendet wird, um eine Gruppe von Knoten aus einem XML-Dokument auszuwählen. Jeder XPath-Operator wählt eine Knotengruppe aus, die auf einer von einem vorherigen XPath-Operator ausgewählten Knotengruppe basiert. Bei einer Reihe von <Kundenknoten> kann XPath beispielsweise alle< Order-Knoten> mit dem Datumsattributwert "7.14.1999" auswählen. Die resultierende Knotengruppe enthält alle Bestellungen mit dem Bestelldatum 14.7.1999.

Die XPath-Sprache wurde vom World Wide Web Consortium (W3C) als Standardnavigationssprache definiert. SQLXML 4.0 implementiert eine Teilmenge der W3C XPath-Spezifikation, die sich in http://www.w3.org/TR/1999/PR-xpath-19991008.htmlder Datei befindet.

Nachfolgend werden die Hauptunterschiede zwischen der XPath-Implementierung des W3C und der SQLXML 4.0-Implementierung beschrieben.

  • Stammabfragen

    In SQLXML 4.0 werden Abfragen des Stammelements (/) nicht unterstützt. Jede XPath-Abfrage muss mit einem ElementType> der obersten Ebene <im Schema beginnen.

  • Melden von Fehlern

    Die XPath-Spezifikation des W3C definiert keine Fehlerbedingungen. XPath-Abfragen, die keine Knoten auswählen, geben eine leere Knotengruppe zurück. In SQLXML 4.0 kann eine Abfrage viele Arten von Fehlermeldungen zurückgeben.

  • Dokumentreihenfolge

    In SQLXML 4.0 ist die Dokumentreihenfolge nicht immer bestimmt. Daher werden numerische Prädikate und Achsen, die die Dokumentreihenfolge (z . B. die folgende) verwenden, nicht implementiert.

    Das Fehlen einer Dokumentreihenfolge bedeutet auch, dass der Zeichenfolgenwert eines Knotens nur dann ausgewertet werden kann, wenn der betreffende Knoten nur einer Spalte in nur einer Zeile zugeordnet werden kann. Ein Element mit untergeordneten Elementen oder einem IDREFS-Knoten oder NMTOKENS-Knoten kann nicht in eine Zeichenfolge konvertiert werden.

    Hinweis

    In einigen Fällen kann die Anmerkung oder schlüssel aus der Beziehungsanmerkung zu einer deterministischen Dokumentreihenfolge führen. Dies ist jedoch nicht die primäre Verwendung dieser Anmerkungen. Weitere Informationen finden Sie unter Identifizieren von Schlüsselspalten mit sql:key-fields (SQLXML 4.0) und Angeben von Beziehungen mithilfe von sql:relationship (SQLXML 4.0)

  • Datentypen

    SQLXML 4.0 hat Einschränkungen bei der Implementierung der XPath-Zeichenfolge, -Zahlen- und booleschen Datentypen. Weitere Informationen finden Sie unter XPath-Datentypen (SQLXML 4.0).

  • Produktübergreifende Abfragen

    SQLXML 4.0 unterstützt keine produktübergreifende XPath-Abfragen wie Customers[Order/@OrderDate=Order/@ShipDate]. Mit dieser Abfrage werden alle Order-Datensätze aus der Datenbank Customers ausgewählt, bei denen der OrderDate-Wert dem ShipDate-Wert entspricht.

    Allerdings unterstützt SQLXML 4.0 keine Abfragen wie Customer[Order[@OrderDate=@ShippedDate]], mit der alle Customer-Datensätze ausgewählt werden, für die Order-Datensätze vorhanden sind, bei denen der OrderDate-Wert dem ShipDate-Wert entspricht.

  • Fehlerbehandlung und Sicherheit

    Abhängig vom verwendeten Schema- und XPath-Abfrageausdruck können Transact-SQL-Fehler benutzern unter bestimmten Bedingungen verfügbar gemacht werden.

Die Tabellen in den folgenden Abschnitten enthalten nähere Angaben dazu, in welcher Hinsicht sich die Implementierung von XPath-Abfragen in SQLXML 4.0 von der betreffenden W3C-Spezifikation unterscheidet.

Unterstützte Funktionalität

In der folgenden Tabelle werden die Funktionen der XPath-Sprache aufgeführt, die in SQLXML 4.0 implementiert sind.

Funktion Artikel Link zu Beispielabfragen
Achsen attribut, child, parent, and self axes Angeben von Achsen in XPath-Abfragen (SQLXML 4.0)
Prädikate mit booleschen Werten einschließlich aufeinander folgender und geschachtelter Prädikate Angeben von arithmetischen Operatoren in XPath-Abfragen (SQLXML 4.0)
Alle relationalen Operatoren =, !=, <=<, >, = > Angeben von relationalen Operatoren in XPath-Abfragen (SQLXML 4.0)
Arithmetic operators (Arithmetische Operatoren) +, -, *, div Angeben von arithmetischen Operatoren in XPath-Abfragen (SQLXML 4.0)
Explizite Konvertierungsfunktionen number(), string(), Boolean() Angeben von expliziten Konvertierungsfunktionen in XPath-Abfragen (SQLXML 4.0)
Boolesche Operatoren AND, OR Angeben von booleschen Operatoren in XPath-Abfragen (SQLXML 4.0)
Boolesche Funktionen true(), false(), not() Angeben von booleschen Funktionen in XPath-Abfragen (SQLXML 4.0)
XPath-Variablen Angeben von XPath-Variablen in XPath-Abfragen (SQLXML 4.0)

Nicht unterstützte Funktionalität

In der folgenden Tabelle werden die Funktionen der XPath-Sprache aufgeführt, die in SQLXML 4.0 nicht implementiert sind.

Funktion Artikel
Achsen vorgänger, vorgänger-oder-selbst, descendant, descendant-or-self (/), following, following-sibling, namespace, preceding, preceding-sibling
Prädikate mit numerischen Werten
Arithmetic operators (Arithmetische Operatoren) mod
Knotenfunktionen vorgänger, vorgänger-oder-selbst, descendant, descendant-or-self (/), following, following-sibling, namespace, preceding, preceding-sibling
Zeichenfolgenfunktionen string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), substring(), string-length(), normalize(), translate()
Boolesche Funktionen lang()
Numeric-Funktionen summe(), floor(), ceiling(), round()
Union-Operator |

Bei der Angabe von XPath-Abfragen in einer Vorlage ist Folgendes zu beachten:

  • XPath kann Zeichen wie < oder & enthalten, die besondere Bedeutungen in XML haben (und Die Vorlage ist ein XML-Dokument). Sie müssen diese Zeichen mit XML-Codierung escapen oder den XPath in der URL angeben.

Weitere Informationen

Verwenden von XPath-Abfragen in SQLXML 4.0