47
Xpath und XQuery

Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Embed Size (px)

Citation preview

Page 1: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Xpath und XQuery

Page 2: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

• Typologie• Ergebnisarten• Achsen• Pfad-Ausdrücke• Fortgeschrittene Ausdrücke• Operatoren• Kommentar• Kontrollanweisungen• FLWOR• Konstruktoren• Beispiele

Inhalte

• Variablen• Funktionen• Namensräume• SQL-ähnliche Abfragen• Numerische Funktionen• Zeichenketten-Funktionen• Boolsche Funktionen• Datum und Zeit• Sequenz-Funktionen• XML-Funktionen• Dokumentation und Referenzen

Page 3: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Typologie

XPath unterscheidet zwischen sieben verschiedenen Knoten-Typen.

Page 4: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Die Illustration zeigt die verschiedenen Ergebnisarten eines XPath-Ausdrucks.

Ergebnisarten

Page 5: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Achsen Richtungen

Vorwärts Rückwärtschild descendant attribute self descendant-or-self following-sibling following namespace

parentancestorpreceding-siblingprecedingancestor-or-self

Page 6: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Achsen Typen

Page 7: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Pfad-Ausdrücke Schritte

Pfad-Ausdrücke bestehen aus Schritten, die entweder ein Filter-Ausdruck oder ein Achsen-Schritt sind. Ein Achsen-Schritt enthält zwei Teile: eine vorwärts oder rückwärts gerichtete Achse, gefolgt von einem Knotentest (node test). Dieser ist entweder ein Arten- (kind test) oder ein Namenstest (name test). Optional kann er Prädikate (Filter) enthalten. Einige Achsen können über ihren vollen Namen oder eine abgekürzte Syntax adressiert werden. Der Namenstest kann auch das Joker-Zeichen sein:

Page 8: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Pfad-Ausdrücke Knotentests

Test Treffernode() Knotentext() Textknotencomment() Kommentarknotenelement() Elementknotenitem() Itemschema-element(Book) Element, das Book heißt oder das ein Mitglied der

Ersetzungsgruppe mit dem Kopf-Element Book ist

element(Book) Book-Elementelement(Book, ProductType) Book-Element, dessen Typ (abgeleitet von) ProductType istelement(*, ProductType) Element, dessen Typ (abgeleitet von) ProductType istattribute() Attribut-Knotenattribute(type) type-Attributattribute(*, xs:date) Beliebiges Attribut, dessen Typ (abgeleitet von) xs:date istdocument-node() Dokument-Knotendocument-node(element(Book)) Dokumentknoten, der ein Book-Element istprocessing-instruction() Verarbeitungsanweisungsknotenprocessing-instruction(name) Verarbeitungsanweisung mit dem gegebenen Namen

Page 9: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Pfad-Ausdrücke Abgekürzte Syntax

Kurzform BeschreibungKeine Achsenangabe child::

// /descendant-or-self::node()/

. Kontext-Item (entweder ein Knoten oder ein atomarer Wert)

@ attribute::

.. parent::node()

@* alle Attributknoten

* alle Kindknoten

Page 10: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Pfad-Ausdrücke Relative und absolute Pfadausdrücke

Page 11: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Pfad-Ausdrücke Beispiele

Absolute Pfadausdrücke

• Alle FiscalYear-Elemente/child::SalesReport/child::FiscalYear/SalesReport/FiscalYear

• Alle FiscalYear in allen Hierarchien//FiscalYear

Page 12: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Relative Pfadausdrücke• Alle vorherigen FiscalYear

preceding-sibling::FiscalYear

• Alle Turnover innerhalb aller vorherigen FiscalYearpreceding-sibling::FiscalYear/Turnover

• Alle Category und Turnover von allen vorherigen FiscalYearpreceding-sibling::FiscalYear/Category | preceding-sibling::FiscalYear/Turnover

Pfad-Ausdrücke Beispiele

Page 13: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Fortgeschrittene Ausdrücke Mengenausdrücke

Der Operator every prüft, ob die Bedingung in allen gewählten Knoten erfüllt ist, während some prüft, ob wenigstens ein Knoten die Bedingung erfüllt.

(some | every) $variable in expr [, $variable2 in expr]*satisfies expr

Page 14: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Fortgeschrittene Ausdrücke Sequenzausdrücke

• Sequenz von fünf Zahlen(11, 12, 15, 22, 31)

• Vereinigte Sequenz von fünf Zahlen(11, (), ((12, 15), 22), 31)

• Sequenz von zwei Elementen(Category, Turnover)

• Sequenz von zwei Variablen($category, $turnover)

• Sequenz von 11 bis 15 mithilfe eines Bereichsausdrucks(11 to 15)

Page 15: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Fortgeschrittene Ausdrücke Sequenztypen

• Der instance of-Ausdruck prüft, ob ein Wert die Instanz von einem bestimmten Datentyp ist.TreatExpr (instance of SequenceType)

• Der cast-Ausdruck wandelt die Eingabe in einen anderen Datentyp um.UnaryExpr (cast as SingleType)

• Der castable as-Ausdruck prüft, ob ein Wert in einen anderen Datentyp konvertiert werden kann. CastExpr (castable as SingleType)

• Zur Auswertungszeit sichert der treat-Ausdruck zu, dass ein Ausdruck einen bestimmten Datentyp hat, aber ändert ihn nicht.CastableExpr (treat as SequenceType)

Page 16: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Operatoren

Vergleich Beschr. Arithmethisch Beschr. Logik Beschr.= Gleichheit + Addition and Logisches

AND

!= Ungleichheit - Subtraktion or Logisches OR

< &lt; Weniger als * Multiplikation not Logisches NOT

> &gt; Größer als div Division <= &lt;=

Weniger als oder gleich

mod Modulo

>= &gt;=

Größer als oder gleich

 

Page 17: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Kommentar

/* (: Document node :) /* (: FiscalYear-nodes:) /* (: their child nodes:)

Page 18: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KontrollanweisungenFallunterscheidung

if ( test expr) then expr else default-expr

Kontext: FiscalYear

Ausgabe von {+/-} in Abhängigkeit von Differenzif (Diff > 0) then '+' else '-'

Ausgabe von {+/-} in Abhängigkeit von Differenz und Wert <> 0if (Diff != 0) then ( if (Diff > 0) then '+' else '-')else 'N/A'

Page 19: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KontrollanweisungenWiederholung

for $variable in expr [, $variable2 in expr]*return (expr)

Sequenz aus allen verschiedenen Kategorienamen (xs:string, keine Duplikate):for $c in distinct-values(//Category)return $c

Sequenz aus unterschiedlichen Kategorien (xs:string) gefolgt von ihrem Gesamtumsatz (xs:decimal):for $c in distinct-values(//Category) return ($c, sum(//FiscalYear[Category = $c]/Turnover))

Page 20: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Sequenz aus Category- und Turnover-Elementen gefolgt von dem prozentualen Anteil der Kategorie am Gesamtumsatz 2011.

for $fy in //FiscalYear[Year = 2011], $total in sum(//FiscalYear [Year = 2011]/Turnover)return ( $fy/Category, $fy/Turnover, concat( round(($fy/Turnover div $total)*100), '%'))

KontrollanweisungenWiederholung

Page 21: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

FLWOR

Schlüsselwort Beschreibung

for Enthält einen Ausdruck (Bindesequenz), die durch eine Bindevariable einen Zugang zu einer Knotenmenge bietet (ähnlich der gewählten Menge in xsl:for-each).

let Enthält mindestens eine Variable, die mit der Bindesequenz in Beziehung steht, aber keine neue Iteration startet wie die for-Klausel.

order by Sortierung der Bindesequenz in ascending (Standardwert, aufsteigend) oder descending Reihenfolge.

where Einschränkung und Filter, der einen XPath-Ausdruck verwendet. Alter-nativ kann oft ein XPath-Prädikat in der for-Klausel genutzt werden.

return Enthält die Ergebnissequenz (d.h. die Erstellung einer XML-Ausgabe) und wird für jedes Tupel in der Bindesequenz ausgeführt.

Die FLWOR (“flower”) Syntax enthält Techniken für Bindung, Iteration, Filter und Sortierung von XML-Daten (Tupeln).

Page 22: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

FLWOR

for $binding-variable1 in expr, $binding-variable2 in expr ...let $variable1 := expr, $variable2 := expr ...where filter-exprorder by expr ascending|descendingreturn expr

Page 23: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenDirekte Konstruktoren

Ähnlich wie XSLT und die Erstellung der literalen Ergebnismenge, so erlaubt auch XQuery die direkte Ausgabe von Elementen, Attributen und anderen Knoten. Ausdrücke können dann zusätzlich für dynamische Erstellung zum Einsatz kommen.

<Product id="5" category="{ancestor::Category/Name}"> <{child::Currency}>{ child::Price }</{child::Currency}> <Title>{child::Name}</Title> <Status>available</Status></Product>

Page 24: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenBerechnete Konstruktoren

Die folgende Liste enthält die verschiedenen berechneten Konstruktoren (computed constructors).

Dies ist jeweils ein Schlüsselwort für die Art des Knotens und – in Abhängigkeit von seiner Art – weiteren Ausdrücken für Name und Inhalt.

Abkürzungen: • QName - qualifizierter XML-Name, • NCName – unqualifizierter Name (ohne Namensraum-Präfix) ,• ContentExpr – Ausdruck für die Erstellung des Inhalts

und schließlich • Expr - beliebiger (XPath) Ausdruck.

Page 25: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenBerechnete Konstruktoren

Elementelement (QName | ({ Expr })) { ContentExpr? }

• Erstellt ein Element mit einem Namen, der in QName angegeben ist oder aus Expr resultiert. Der Inhalt ergibt sich aus ContentExpr.

Attributattribute (QName | ({ Expr })) { Expr? }

• Erstellt ein mit einem Namen, der in QName angegeben ist oder aus Expr resultiert. Der Inhalt ergibt sich aus Expr.

Dokumentdocument { Expr }

• Erstellt ein XML-Dokument (und kein Fragment) und enthält den XML-Inhalt aus Expr.

Page 26: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenBerechnete Konstruktoren

Texttext { Expr }

• Erstellt einen Text-Knoten mit dem Inhalt aus Expr.

Verarbeitungsanweisungprocessing-instruction (NCName | ({ Expr })) { Expr? }

• Erstellt eine Prozessoranweisung mit dem Namen aus NCName oder aus Expr. Der Inhalt ergibt sich aus Expr.

Kommentarcomment { Expr }

• Erstellt einen Kommentar-Knoten mit dem Inhalt aus Expr.

Page 27: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenBeispiele

Direkte Konstruktoren

Page 28: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

KonstruktorenBeispiele

Berechnete Konstruktoren

Page 29: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Variablen

• Deklaration inkl. Datentyp: declare variable $x as xs:integer := 5;

• Deklaration ohne expliziten Datentyp: declare variable $x := 5.5;

• Globaler Parameter und der Wert aus der ausführenden Umgebung: declare variable $x as xs:integer external;

• Deklaration mit Namensraum: declare variable $dmb:year as xs:year := 2002;

Page 30: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Funktionen

Zusätzlich zu den schon eingebauten Funktionen kann man benutzerdefinierte Funktionen in XQuery-Syntax erstellen und auch externe Funktionen (ähnlich wie benutzerdefinierte XSLT-Funktionen und externe Funktionen) verwenden.

Parameter und der Rückgabewert sind durch XML Schema-Typen (xs:string, xs:date etc.) und Sequenz-Typen (element(*, name), element()* etc.) definiert. Externe Funktionen erhalten das external-Schlüsselwort.

Benutzerdefinierte Funktionen werden im vordefinierten local-Namensraum erstellt, wenn man keinen anderen Namensraum verwendet.

Page 31: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Funktionen

Page 32: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

NamensräumeVordefinierte Namensräume

Die folgenden vordefinierten Namensräume können über ihre (Standard-)Präfixe benutzt werden:

• xml = http://www.w3.org/XML/1998/namespace

• xs = http://www.w3.org/2001/XMLSchema

• xsi = http://www.w3.org/2001/XMLSchema-instance

• fn = http://www.w3.org/2005/xpath-functions

• local = http://www.w3.org/2005/xquery-local-functions

Page 33: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Namensräume Namensraum-Deklaration

Namensräume können in XQuery-Syntax oder mit einem direkten Konstruktor erzeugt werden.

Page 34: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Namensräume Standard-Namensraum-Deklaration

Standard-Namensräume für Elemente und Funktionen werden durch die Schlüsselwörter default und element/function angelegt.

Page 35: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

SQL-ähnliche Abfragen

Page 36: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

SQL-ähnliche Abfragen Inner Join

Page 37: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

SQL-ähnliche Abfragen Outer Join

Page 38: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Numerische Funktionen

• abs(-5) => 5

• ceiling(5.2) => 6

• floor(5.7) => 5

• round(5.7) => 6

• round-half-to-even(5.728, 2) => 5.73

• sum((1,2,3)) => 6

• avg((1,2,3)) => 2

• max((1,2,3)) => 3

• min((1,2,3)) => 1

Page 39: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Zeichenketten-Funktionen

• string-to-codepoints("Hello World") => »67 111 109 101 108 105 111«• codepoints-to-string((88, 80, 97, 116, 101)) => »XPath«• string-join(('Dragon', 'Mountain'), ' ') => »Dragon Mountain«• concat('Dragon ', 'Mountain') => »Dragon Mountain«• substring('Comelio', 2) => »omelio«• substring('Comelio', 2, 4) => »omel«• string-length('1, 2, 3') => 7• normalize-space('Quo vadis ?') => »Quo vadis ?«• upper-case('comelio') => »COMELIO«• lower-case('COMELIA') => »comelia«• translate('abc', 'bca', '123') => 321• escape-uri ("http://www.../Vol 2", false()) => »http://www.../Vol%202«• contains('Abracadabra', 'raca') => true• starts-with('Abracadabra', 'brac') => false• ends-with('Abracadabra', 'bra') => true• substring-before('Abracadabra', 'ra') => »Ab«• substring-after('Abracadabra', 'ada') => »bra«

Page 40: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Boolsche Funktionen

• true() => true

• false() => false

• not(true()) => false

Page 41: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Datum und Zeit

Daueryears-from-duration(xdt:yearMonthDuration("P2Y7M")) => 2 yearsdays-from-duration(xdt:dayTimeDuration("P5DT8H")) => five days{months|days|hours|minutes|seconds}-from-duration()

Datumyear-from-dateTime(xs:dateTime("1978-04-06T04:00:00-05:00")) => 1978{month|day|minutes|seconds}-from-dateTime()year-from-date(xs:date("1971-04-27")) => 1971{month|day}-from-date()

Zeithours-from-time(xs:time("10:12:00")) => 10Similar:{minutes|seconds}-from-time()

Page 42: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Datum und Zeit

Zeitzone

timezone-from-dateTime(xs:dateTime("1978-04-06T04:05:10-05:00")) => xdt:dayTimeDuration("-PT5H")timezone-from-{date|time}()adjust-dateTime-to-timezone( xs:dateTime("2005-05-24T17:00:00")) => 2005-05-24T17:00:00+01:00adjust-{date|time}-to-timezone()subtract-dateTimes-yielding-yearMonthDuration( xs:dateTime("2005-05-15T09:12:00"), xs:dateTime("2001-09-28T19:00:00")) => als xdt:yearMonthDuration P3Y7M (drei Jahre, sieben Monate)subtract-{dateTimes|dates}-yielding-{yearMonthDuration|dayTimeDuration}()

Page 43: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Sequenz-Funktionen

boolean("true") => trueindex-of (("A", "Bra", "Ca", "Da", "Bra"), "Bra") => (2, 5)distinct-values((1, 2.0, 3, 4, 4.5, 2)) => (1, 2, 3, 4, 4.5)insert-before(("b","c"), 0, "a") =>(a, b, c)remove(("a","b","c"), 2) => (a, c)reverse(("a","b","c")) => (c, b, a)subsequence(("a","b","c", "d"), 3) => (c, d)subsequence(("a","b","c", "d"), 2, 1) => (b)

Page 44: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

XML-Funktionen

Namen und Namensräumeexpanded-QName("dmb", "Book") => dmb:Book local-name-from-QName(dmb:Book) => xs:NCName("Book")namespace-uri-from-QName(dmb:Book) => xs:anyURI("http://...")

Schlüssel und Verweiseid()idref()

Dokumentedoc("catalog.xml") doc-available("catalog.xml")

Page 45: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

XML-Funktionen

Kardinalitätzero-or-one()one-or-more()exactly-one()

Kontextposition()last()current-{dateTime|date|time}() implicit-timezone()default-collation()static-base-uri()

Page 46: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Dokumentation und Referenzen

XPath 1.0XML Path Language (XPath) Version 1.0, W3C Recommendation.http://www.w3.org/TR/xpath

XPath 2.0XML Path Language (XPath) 2.0, W3C Recommendation. http://www.w3.org/TR/xpath20/

XQuery 1.0XQuery 1.0: An XML Query LanguageW3C Recommendation 23 January 2007http://www.w3.org/TR/xquery/

XPath-/XQuery-FunctionsXQuery 1.0 and XPath 2.0 Functions and Operators, W3C Recommendation.http://www.w3.org/TR/xpath-functions/

Page 47: Xpath und XQuery. Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren

Fragen & Antworten