Freigeben über


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

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.

HinweisHinweis

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 unter Einführung in XSD-Schemas mit Anmerkungen (SQLXML 4.0) und in dem 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 "Important" 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. Wenn beispielsweise eine Gruppe von <Customer>-Knoten gegeben ist, können mit einer XPath-Abfrage alle <Order> -Knoten mit dem date-Attributwert "7/14/1999" abgefragt werden. 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 XPath-Spezifikation des W3C, die Sie unter der Adresse http://www.w3.org/TR/1999/PR-xpath-19991008.html finden.

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

  • Abfragen des Stammelements

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

  • Erstellen von Fehlerberichten

    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 sind numerische Prädikate und Achsen, welche die Dokumentreihenfolge verwenden (z. B. following), 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.

    HinweisHinweis

    In einigen Fällen können die key-fields-Anmerkung oder Schlüssel aus der relationship-Anmerkung in einer deterministischen Dokumentreihenfolge resultieren. Dies ist jedoch nicht der primäre Verwendungszweck dieser Anmerkungen. Weitere Informationen hierzu finden Sie unter Identifizieren von Schlüsselspalten mithilfe von sql:key-Feldern (SQLXML 4.0) und Angeben von Beziehungen mit 'sql:relationship' (SQLXML 4.0)

  • Datentypen

    SQLXML 4.0 weist Einschränkungen hinsichtlich der Implementierung der XPath-Datentypen string, number und boolean auf. Weitere Informationen hierzu 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

    Je nachdem, welches Schema und welcher XPath-Abfrageausdruck verwendet werden, können Transact-SQL-Fehler unter bestimmten Bedingungen für die Benutzer 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

Element

Link zu Beispielabfragen

Achsen

attribute-, child-, parent und self-Achsen

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)

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

Element

Achsen

ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, preceding, preceding-sibling

Prädikate mit numerischen Werten

 

Arithmetische Operatoren

mod

Knotenfunktionen

ancestor, ancestor-or-self, descendant, descendant-or-self (//), following, following-sibling, namespace, preceding, preceding-sibling

Zeichenfolgenfunktionen

string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate()

Boolesche Funktionen

lang()

Numerische Funktionen

sum(), 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 in XML (und eine Vorlage ist ein XML-Dokument) eine spezielle Bedeutung haben. Sie müssen diese Zeichen mittels XML &-Codierung mit Escapezeichen versehen oder XPath in der URL angeben.

Siehe auch

Verweis

Verwenden von XPath-Abfragen in SQLXML 4.0