Xpath und XQuery.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Verarbeiten und Präsentieren von
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
eXist Open Source Native XML Database
Hands On – Einführung in XML
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
FH-Hof Einbindung von JavaScript Anweisungen
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
XINDICE The Apache XML Project Name: Jacqueline Langhorst
SQL als Abfragesprache
XPATH XML Path Language. Xpath – XML Path Language IT Zertifikat - Daten und Metadatenstandards: XPath 2 Entwicklung des W3C Adressierungssprache für.
XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
Das XQuery-Datenmodell. Gliederung Sequenzen Atomare Werte Knoten Knoteneigenschaften Sequenztypen und Knotenzugriffsfunktion Typabfrage Gleichheit von.
XQuery – String Funktionen Datenbanktechnologie / SS 2012 / Leonard Claus.
Robotik mit LEGO Mindstorms
XHTML 1.1 C. Nimz Abstrakte Module XHTML 1.1 C. Nimz Was ist ein abstraktes Modul? Definition eines XHTML-Moduls in spezieller leichter.
XML-Anfragesprachen (Schwerpunkt XQuery). © Prof. T. Kudraß, HTWK Leipzig 2 2 Übersicht Anforderungen an XML-Anfragesprachen Stand der Entwicklung XPath.
XML-Anfragesprachen (Schwerpunkt XQuery). © Prof. T. Kudraß, HTWK Leipzig Übersicht Anforderungen an XML-Anfragesprachen Stand der Entwicklung XPath Anfragesprache.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
XML Standardisierungen und Abfragesprachen
Einführung XML XML Einführung Andreas Leicht.
Zusammenfassung Vorwoche
XML-Algebren Martin Winkler.
Katharina Bellon Technische Universität Kaiserslautern Fachbereich Informatik Lehrgebiet Datenverwaltungssysteme Verarbeitung von XML-Strömen.
XPointer Die Xpointer beschreiben einen Ort oder Bereich innerhalb einer XML-Instanz. Die XPointer bauen auf der XML Path Language auf. Die XPointer ist.
Xlink / Xpointer - Framework
XQuery-Anfragen Spezifikations- und Selektionsmethoden für Daten und Dienste Markus Mauch.
2.2 Definition eines Datenbankschemas (SQL-DDL)
1 XML und Datenbanken Kapitel 7: Modellierung, Teil 1 Meike Klettke Universität Rostock Fakultät für Informatik und Elektrotechnik
Übung 2: XML / XQuery Übung 2: XML / XQuery.
1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI
XML Path Language XPath
Quilt: Eine XML Anfragesprache für heterogene Datenquellen
- XML-Path Language (xPath) ist eine Empfehlung des W3C - es wurde entwickelt, um durch ein XML- Dokument zu navigieren - und ist ein großer Teil von.
XSLT.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
XML DTD.
XML Schema.
XML - Konzepte XHTML XML Base XPath XInclude XLink XForms XPointer
Proseminar an der TU München Martin Levihn
Datenbanktechnologie Daniel Ebner SS Mai Ulrike Lohner.
XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.
XSL und XSLT1 eXstensible Stylesheet Language und eXstensible Stylesheet Language Transformation.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
Verarbeiten von XML-Daten
Datenbanksysteme für hörer anderer Fachrichtungen
XSLT Voraussetzungen, trivial
Kurzpräsentation von Herbert Schlechta
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
PHP: Operatoren und Kontrollstrukturen
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
XQuery 1.0 – Arbeitsweise Mögl. Eingaben Das wird berücksichtigt: Typen von XPath und XML Schema Namensräume, Module Ergebnis: XML-Instanz.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
XPath Datenmodell und Sequenzen Universität zu Köln – Historisch-Kulturwissenschaftliche Informationsverarbeitung Datenbanktechnologie – Daniel Ebner –
(Syntax, Strings/Zahlen, Variablen, Arrays)
XPath und XQuery Marko Harasic Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
 Präsentation transkript:

Xpath und XQuery

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

Typologie XPath unterscheidet zwischen sieben verschiedenen Knoten-Typen.

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

Achsen Richtungen Vorwärts Rückwärts child descendant attribute self descendant-or-self following-sibling following namespace parent ancestor preceding-sibling preceding ancestor-or-self

Achsen Typen

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:

Pfad-Ausdrücke Knotentests Treffer node() Knoten text() Textknoten comment() Kommentarknoten element() Elementknoten item() Item schema-element(Book) Element, das Book heißt oder das ein Mitglied der Ersetzungsgruppe mit dem Kopf-Element Book ist element(Book) Book-Element element(Book, ProductType) Book-Element, dessen Typ (abgeleitet von) ProductType ist element(*, ProductType) Element, dessen Typ (abgeleitet von) ProductType ist attribute() Attribut-Knoten attribute(type) type-Attribut attribute(*, xs:date) Beliebiges Attribut, dessen Typ (abgeleitet von) xs:date ist document-node() Dokument-Knoten document-node(element(Book)) Dokumentknoten, der ein Book-Element ist processing-instruction() Verarbeitungsanweisungsknoten processing-instruction(name) Verarbeitungsanweisung mit dem gegebenen Namen

Pfad-Ausdrücke Abgekürzte Syntax Kurzform Beschreibung Keine Achsenangabe child:: // /descendant-or-self::node()/ . Kontext-Item (entweder ein Knoten oder ein atomarer Wert) @ attribute:: .. parent::node() @* alle Attributknoten * alle Kindknoten

Pfad-Ausdrücke Relative und absolute Pfadausdrücke

Pfad-Ausdrücke Beispiele Absolute Pfadausdrücke Alle FiscalYear-Elemente /child::SalesReport/child::FiscalYear /SalesReport/FiscalYear Alle FiscalYear in allen Hierarchien //FiscalYear

Pfad-Ausdrücke Beispiele Relative Pfadausdrücke Alle vorherigen FiscalYear preceding-sibling::FiscalYear Alle Turnover innerhalb aller vorherigen FiscalYear preceding-sibling::FiscalYear/Turnover Alle Category und Turnover von allen vorherigen FiscalYear preceding-sibling::FiscalYear/Category | preceding-sibling::FiscalYear/Turnover

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

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)

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)

Operatoren Vergleich Beschr. Arithmethisch Logik = Gleichheit + Addition and Logisches AND != Ungleichheit - Subtraktion or Logisches OR < < Weniger als * Multiplikation not Logisches NOT > > Größer als div Division   <= <= Weniger als oder gleich mod Modulo >= >= Größer als oder gleich

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

Kontrollanweisungen Fallunterscheidung 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'

Kontrollanweisungen Wiederholung 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): return ($c, sum(//FiscalYear[Category = $c]/Turnover))

Kontrollanweisungen Wiederholung 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), '%') )

FLWOR Die FLWOR (“flower”) Syntax enthält Techniken für Bindung, Iteration, Filter und Sortierung von XML-Daten (Tupeln). 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.

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

Konstruktoren Direkte 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>

Konstruktoren Berechnete 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.

Konstruktoren Berechnete 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.

Konstruktoren Berechnete 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.

Konstruktoren Beispiele Direkte Konstruktoren

Konstruktoren Beispiele Berechnete 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;

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.

Funktionen

Namensräume Vordefinierte 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

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

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

SQL-ähnliche Abfragen

SQL-ähnliche Abfragen Inner Join

SQL-ähnliche Abfragen Outer Join

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

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«

Boolsche Funktionen true() => true false() => false not(true()) => false

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()

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}()

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)

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")

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()

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/

Fragen & Antworten