1 / 47

Xpath und XQuery

Xpath und XQuery. Inhalte. Variablen Funktionen Namensräume SQL-ähnliche Abfragen Numerische Funktionen Zeichenketten-Funktionen Boolsche Funktionen Datum und Zeit Sequenz-Funktionen XML-Funktionen Dokumentation und Referenzen. Typologie Ergebnisarten Achsen Pfad-Ausdrücke

meadow
Download Presentation

Xpath und XQuery

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Xpath und XQuery

  2. Inhalte • Variablen • Funktionen • Namensräume • SQL-ähnliche Abfragen • Numerische Funktionen • Zeichenketten-Funktionen • Boolsche Funktionen • Datum und Zeit • Sequenz-Funktionen • XML-Funktionen • Dokumentation und Referenzen Typologie Ergebnisarten Achsen Pfad-Ausdrücke Fortgeschrittene Ausdrücke Operatoren Kommentar Kontrollanweisungen FLWOR Konstruktoren Beispiele

  3. Typologie XPath unterscheidet zwischen sieben verschiedenen Knoten-Typen.

  4. Ergebnisarten Die Illustration zeigt die verschiedenen Ergebnisarten eines XPath-Ausdrucks.

  5. AchsenRichtungen

  6. Achsen Typen

  7. 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 (nodetest). Dieser ist entweder ein Arten- (kindtest) oder ein Namenstest (nametest). 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:

  8. Pfad-AusdrückeKnotentests

  9. Pfad-Ausdrücke Abgekürzte Syntax

  10. Pfad-Ausdrücke Relative und absolute Pfadausdrücke

  11. Pfad-AusdrückeBeispiele • Absolute Pfadausdrücke • Alle FiscalYear-Elemente/child::SalesReport/child::FiscalYear/SalesReport/FiscalYear • Alle FiscalYear in allen Hierarchien//FiscalYear

  12. Pfad-AusdrückeBeispiele • Relative Pfadausdrücke • Alle vorherigen FiscalYearpreceding-sibling::FiscalYear • Alle Turnover innerhalb aller vorherigen FiscalYearpreceding-sibling::FiscalYear/Turnover • AlleCategory und Turnover von allenvorherigenFiscalYearpreceding-sibling::FiscalYear/Category | preceding-sibling::FiscalYear/Turnover

  13. Fortgeschrittene AusdrückeMengenausdrü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]* satisfiesexpr

  14. Fortgeschrittene AusdrückeSequenzausdrü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)

  15. Fortgeschrittene AusdrückeSequenztypen • Der instanceof-Ausdruck prüft, ob ein Wert die Instanz von einem bestimmten Datentyp ist.TreatExpr(instanceofSequenceType) • Der cast-Ausdruck wandelt die Eingabe in einen anderen Datentyp um.UnaryExpr(castasSingleType) • Der castableas-Ausdruck prüft, ob ein Wert in einen anderen Datentyp konvertiert werden kann. CastExpr(castableasSingleType) • Zur Auswertungszeit sichert der treat-Ausdruck zu, dass ein Ausdruck einen bestimmten Datentyp hat, aber ändert ihn nicht.CastableExpr(treat as SequenceType)

  16. Operatoren

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

  18. KontrollanweisungenFallunterscheidung if ( test expr) then expr else default-expr Kontext: FiscalYear Ausgabe von {+/-} in Abhängigkeit von Differenz if (Diff > 0) then '+' else '-' Ausgabe von {+/-} in Abhängigkeit von Differenz und Wert <> 0 if (Diff != 0) then ( if (Diff > 0) then '+' else '-') else 'N/A'

  19. 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))

  20. KontrollanweisungenWiederholung 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), '%') )

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

  22. FLWOR for $binding-variable1 in expr, $binding-variable2 in expr ... let $variable1 := expr, $variable2 := expr ... where filter-expr order by exprascending|descending returnexpr

  23. 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>

  24. KonstruktorenBerechnete Konstruktoren • Die folgende Liste enthält die verschiedenen berechneten Konstruktoren (computedconstructors). • 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.

  25. KonstruktorenBerechnete Konstruktoren • Element • element (QName | ({ Expr })) { ContentExpr? } • Erstellt ein Element mit einem Namen, der in QName angegeben ist oder aus Expr resultiert. Der Inhalt ergibt sich aus ContentExpr. • Attribut • attribute (QName | ({ Expr })) { Expr? } • Erstellt ein mit einem Namen, der in QName angegeben ist oder aus Expr resultiert. Der Inhalt ergibt sich aus Expr. • Dokument • document { Expr} • Erstellt ein XML-Dokument (und kein Fragment) und enthält den XML-Inhalt aus Expr.

  26. KonstruktorenBerechnete Konstruktoren • Text • text { Expr } • Erstellt einen Text-Knoten mit dem Inhalt aus Expr. • Verarbeitungsanweisung • processing-instruction (NCName | ({ Expr })) { Expr? } • Erstellt eine Prozessoranweisung mit dem Namen aus NCName oder aus Expr. Der Inhalt ergibt sich aus Expr. • Kommentar • comment { Expr } • Erstellt einen Kommentar-Knoten mit dem Inhalt aus Expr.

  27. KonstruktorenBeispiele Direkte Konstruktoren

  28. KonstruktorenBeispiele Berechnete Konstruktoren

  29. Variablen • Deklarationinkl. Datentyp: declare variable $x as xs:integer := 5; • DeklarationohneexplizitenDatentyp: declare variable $x := 5.5; • Globaler Parameter und der Wert aus der ausführenden Umgebung: declare variable $x asxs:integerexternal; • DeklarationmitNamensraum: declare variable $dmb:year as xs:year := 2002;

  30. 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.

  31. Funktionen

  32. 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

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

  34. Namensräume Standard-Namensraum-Deklaration Standard-Namensräume für Elemente und Funktionen werden durch die Schlüsselwörter default und element/functionangelegt.

  35. SQL-ähnliche Abfragen

  36. SQL-ähnliche Abfragen InnerJoin

  37. SQL-ähnliche Abfragen OuterJoin

  38. NumerischeFunktionen • 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

  39. 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«

  40. BoolscheFunktionen • true() => true • false() => false • not(true()) => false

  41. Datum und Zeit Dauer years-from-duration(xdt:yearMonthDuration("P2Y7M")) => 2 years days-from-duration(xdt:dayTimeDuration("P5DT8H")) => five days {months|days|hours|minutes|seconds}-from-duration() Datum year-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() Zeit hours-from-time(xs:time("10:12:00")) => 10 Similar: {minutes|seconds}-from-time()

  42. 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:00 adjust-{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}()

  43. Sequenz-Funktionen boolean("true") => true index-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)

  44. XML-Funktionen Namen und Namensräume expanded-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 Verweise id() idref() Dokumente doc("catalog.xml") doc-available("catalog.xml")

  45. XML-Funktionen Kardinalität zero-or-one() one-or-more() exactly-one() Kontext position() last() current-{dateTime|date|time}() implicit-timezone() default-collation() static-base-uri()

  46. Dokumentation und Referenzen XPath 1.0 XML Path Language (XPath) Version 1.0, W3C Recommendation. http://www.w3.org/TR/xpath XPath 2.0 XML Path Language (XPath) 2.0, W3C Recommendation. http://www.w3.org/TR/xpath20/ XQuery 1.0 XQuery 1.0: An XML Query Language W3C Recommendation 23 January 2007 http://www.w3.org/TR/xquery/ XPath-/XQuery-Functions XQuery 1.0 and XPath 2.0 Functions and Operators, W3C Recommendation. http://www.w3.org/TR/xpath-functions/

  47. Fragen& Antworten

More Related