Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine XPath-Abfrage (XML Path Language) kann als Teil einer URL oder innerhalb einer Vorlage angegeben werden. Das Zuordnungsschema bestimmt die Struktur dieses resultierenden Fragments, und die Werte werden aus der Datenbank abgerufen. Dieser Prozess ähnelt dem Erstellen von Ansichten mithilfe der CREATE VIEW-Anweisung und dem Schreiben von SQL-Abfragen.
Hinweis
Um XPath-Abfragen in SQLXML 4.0 zu verstehen, müssen Sie mit XML-Ansichten und verwandten Konzepten wie Vorlagen und Zuordnungsschema vertraut sein. 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 wie einem Elementknoten, Attributknoten, Textknoten usw. Betrachten Sie z. B. dieses 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 zum Auswählen einer Gruppe von Knoten aus einem XML-Dokument verwendet wird. Jeder XPath-Operator wählt einen Knotensatz basierend auf einem Knotensatz aus, der von einem vorherigen XPath-Operator ausgewählt wurde. Bei einer Reihe von <Kundenknoten> kann XPath beispielsweise alle <Order-Knoten> mit dem Datumsattributwert"7.14.1999" auswählen. Der resultierende Knotensatz enthält alle Bestellungen mit Bestelldatum 7.14.1999.
Die XPath-Sprache wird 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 sind die wichtigsten Unterschiede zwischen der W3C XPath-Implementierung und der SQLXML 4.0-Implementierung aufgeführt.
Stammabfragen
SQLXML 4.0 unterstützt die Stammabfrage (/) nicht. Jede XPath-Abfrage muss mit einem ElementType> der obersten Ebene< im Schema beginnen.
Melden von Fehlern
Die W3C XPath-Spezifikation definiert keine Fehlerbedingungen. XPath-Abfragen, die keine Knoten auswählen, geben einen leeren Knotensatz zurück. In SQLXML 4.0 kann eine Abfrage viele Arten von Fehlermeldungen zurückgeben.
Dokumentreihenfolge
In SQLXML 4.0 wird die Dokumentreihenfolge nicht immer bestimmt. Daher werden numerische Prädikate und Achsen, die die Dokumentreihenfolge verwenden (z
following. B. ) nicht implementiert.Das Fehlen der Dokumentreihenfolge bedeutet auch, dass der Zeichenfolgenwert eines Knotens nur ausgewertet werden kann, wenn dieser Knoten einer einzelnen Spalte in einer einzelnen Zeile zugeordnet ist. Ein Element mit untergeordneten Elementen oder einem IDREFS- oder NMTOKENS-Knoten kann nicht in eine Zeichenfolge konvertiert werden.
Hinweis
In einigen Fällen kann die Anmerkung oder die
key-fieldsSchlüssel aus derrelationshipAnmerkung 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 von XPath
string,numberundbooleanDatentypen. Weitere Informationen finden Sie unter XPath-Datentypen (SQLXML 4.0).Produktübergreifende Abfragen
SQLXML 4.0 unterstützt keine produktübergreifenden XPath-Abfragen, z
Customers[Order/@OrderDate=Order/@ShipDate]. B. . Diese Abfrage wählt alle Kunden mit einer beliebigen Bestellung aus, für die das Bestelldatum dem Versanddatum einer beliebigen Bestellung entspricht.SQLXML 4.0 unterstützt jedoch Abfragen wie
Customer[Order[@OrderDate=@ShippedDate]]z. B. die Auswahl von Kunden mit einer beliebigen Bestellung, für die das Bestelldatum dem ShipDate 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 Details dazu, wie sich die Implementierung von XPath-Abfragen in SQLXML 4.0 von der W3C-Spezifikation in diesen Bereichen unterscheidet.
Unterstützte Funktionalität
Die folgende Tabelle zeigt die Features der XPath-Sprache, die in SQLXML 4.0 implementiert sind.
| Merkmal | Gegenstand | Verknüpfen mit Beispielabfragen |
|---|---|---|
| Achsen |
attribute, child, parent, und self Achsen |
Angeben von Achsen in XPath-Abfragen (SQLXML 4.0) |
| Boolesche 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 relationaler 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 expliziter Konvertierungsfunktionen in XPath-Abfragen (SQLXML 4.0) |
| Boolesche Operatoren | UND, ODER | Angeben boolescher 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 sind die Features der XPath-Sprache aufgeführt, die nicht in SQLXML 4.0 implementiert sind.
| Merkmal | Gegenstand |
|---|---|
| Achsen |
ancestor, ancestor-or-self, , descendant-or-self (//)descendant, following, following-sibling, namespace, , precedingpreceding-sibling |
| Numerische Prädikate | |
| Arithmetische Operatoren | Mod |
| Knotenfunktionen |
ancestor, ancestor-or-self, , descendant-or-self (//)descendant, following, following-sibling, namespace, , precedingpreceding-sibling |
| Zeichenfolgenfunktionen |
string(), concat(), , contains()starts-with(), substring-before(), substring-after(), substring(), , , string-length(), , normalize()translate() |
| Boolesche Funktionen | lang() |
| Numerische Funktionen |
sum(), , floor()ceiling()round() |
| Union-Operator | | |
Wenn Sie XPath-Abfragen in einer Vorlage angeben, beachten Sie das folgende Verhalten:
- 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.