XML-Praxis. XPath. Jörn Clausen.

Ähnliche Dokumente
XML-Praxis. XPath. Jörn Clausen

XML-Praxis. XPath. Jörn Clausen

XSLT XSL Transformations

XPath Lokalisierspfade Achsen in Lokalisierungsschritten

7.2.2 Spezifikation einer Treffermenge

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

INVENTARNR NAME BENUTZNR

Verarbeitung von XML-Dateien. Jörn Clausen

Seminar: XML und intelligente Systeme

XPath-Abfragen. 8 XPath-Abfragen

Python-Praxis XML & XML-Prozessierung

XML-Praxis. XML Übungen. Jörn Clausen

XQuery 2013 S Seite 1 h_da S

XML Path Language (XPath)

XML-Praxis. Einführung in XSLT. Jörn Clausen

Textnavigation mit XPath. Daniel Schopper

XML Path Language (XPath)

Projektseminar "Texttechnologische Informationsmodellierung"

FileMaker Konferenz 2010 XML / XSLT. Ein Workshop mit [x] cross solution Armin Egginger

Seminar Dokumentenverarbeitung

XML-Praxis.

Semistrukturierte Daten

XML-Datenbanken. Autor: Nan Zhang Veranstaltung: XML in Bioinformatik

Inhalt. Beispiel: XML Dokument. Beispiel: Dokumentenbaum. XPath VU Semistrukturierte Daten 1. Datenmodell

XPATH (XPATH) Lernziele

XPath XML Path Language

Dokumentverarbeitung

Gliederung / Inhaltsüberblick

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

Datenbanksysteme. Einführung in XML-Technologien. Teil 1: XML und XPath Martin Gieseking

Summer School Digitale Edition

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Textnavigation mit XPath

Typologie. XPath unterscheidet zwischen sieben verschiedenen Knoten- Typen.

Weiterführende Literatur: M. Knobloch, M. Kopp: Web-Design mit XML, dpunkt-verlag 2001

XPath & XQuery Standardisierte Abfragesprachen für XML-Dokumente. Sebastian Apel

X-Technologien. XML and Friends. Jörn Clausen 9. Juli 2001

Gruppe 3 / 5 / 10. Tutorübung zu Einsatz und Realisierung von Datenbanksystemen (SS 17) Michael Schwarz

XML Extensible Markup Language

Prof. Dr. Martin Leischner Fachbereich Informatik XML. Prof. Dr. Martin Leischner Fachbereich Informatik. Anwendungen (SOAP,WSDL, ) Verknüpfungen XSL

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik

XML 1. Einführung, oxygen. Ulrike Henny. IDE Summer School 2013, Chemnitz

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen.

Einführung in XML Einführung in XML. Erik Wilde Institut für Technische Informatik und Kommunikationsnetze (TIK) ETH Zürich

XML und Dokumentenmanagement

XML Path Language (XPath)

1 Was ist XML? Hallo XML! Kommentare in XML 52

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS XML Anfragen: XPath. Dr. Christian Senger XML 1

XML Extensible Markup Language

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: Datum:

1. Übung zur Vorlesung Service-orientierte Architekturen

XML Information Set, XML Path Language (XPath)

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

Komponenten-basierte Entwicklung Teil 2: Einführung in XML

XML-Praxis.

Datenbanksysteme. Einführung in XML, XPath und XQuery Martin Gieseking

XML Kurs LRZ 1

Datenbanksysteme 2 Frühjahr-/Sommersemester April Darf man in der XML Declaration die Versionsnummer weglassen? (d.h.

Literatur. Verteilte Anwendungen WS Teil 2/Namensräume

Objektorientiertes Programmieren

Einführung in Perl. WWW, Teil 2: XML

IN A NUTSHELL. Elliotte Rusty Harold & W, Scott Means. Deutsche Übersetzung von Kathrin Lichtenberg & Jochen Wiedmann O'REILLY*

Implementierung der XPath-Anfragesprache für XML-Daten in RDBMS unter Ausnutzung des Nummerierungsschemas DLN

XML und.net. Proseminar Objektorientiertes Programmieren mit.net und C# Tuan Duc Nguyen. Institut für Informatik Software & Systems Engineering

XPath Accelerator Zusammenfassung

Algorithmen und Datenstrukturen II

Semistrukturierte Datenmodelle. XML Datenmodelle. XML Infoset. OEM Beispielbaum. Document InfoItem. Beispiel

IT-Zertifikat: Daten- und Metadatenstandards. Transformation von XML-Dokumenten mit XSLT (und XPATH) XSLT kurz und knackig. XSLT und die Praxis

Verarbeitung von XML mit SAX und DOM

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

XML light. XML bearbeiten. Jörn Clausen

XSLT XSL Transformations

Fachhochschule Wiesbaden - Fachbereich DCSM. XML Information Set.

XSLT XSL Transformations

XML-Technologien. XML-Parser. Florian Raith Hochschule München Fakultät für Informatik und Mathematik am 04. November 2010

XML Informationsmodelle

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Perl-Praxis XML & LibXML

Dynamische Inhalte und Formate

XML-Praxis. XML-Grammatiken. Jörn Clausen

... MathML XHTML RDF

Linux I II III Res WN/TT NLTK XML Weka E XML BNC XSLT BNC/XML 7 BNC/XML XML BNC XSLT. Ressourcen-Vorkurs

extended Markup Language (XML)

Textauszeichnung mit XML

Anfragen an XML-Dokumente mit XPath

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

DOM Document Object Model

XQuery Tutorial. Student: Anke Bremer Betreuer: Dr. Sosna

XML-Praxis. XSL-FO Übungen. Jörn Clausen

Web-Programmierung (WPR)

Objektorientiertes Programmieren

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

XML Vorlesung FHA SS

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Transkript:

XML-Praxis XPath Jörn Clausen joern@techfak.uni-bielefeld.de 1

Übersicht XPath Namespaces 2

XML-Dokument als Baum root presentation status date author toc ilist weitere Text-Knoten durch whitespace Aufgabe: lokalisiere einen (oder mehrere) Knoten 3

Analogie Dateisystem / homes juser manual.txt joern vol xml bin xmllint local lib tex share absoluter Pfad: Wegbeschreibung vom Wurzelverzeichnis /vol/xml/bin/xmllint relativer Pfad: Wegbeschreibung vom aktuellen Verzeichnis../juser/manual.txt Unterschied bei XML: gleichnamige Kindknoten 4

XPath XPath beschreibt Pfade im XML-Baum Bezugspunkt: Kon-Knoten Knotentypen: Element, Attribut, Text, Wurzelknoten Kommentar, processing instruction, namespace Beziehungen über Achsen Richtung und Entfernung anderer Knoten XPath-Ausdruck evaluiert zu node set 5

XPath-Ausdrücke root presentation status date author toc ilist child:: 6

XPath-Ausdrücke, cont. root presentation status date author toc ilist attribute::date 7

xpathtester Ergebnis von XPath-Ausdrücken visualisieren: Kon-Knoten durch Anklicken bestimmen Ergebnis-Knoten werden gelb hervorgehoben Bug: Attribute werden nicht markiert 8

Aufgaben Probiere folgende XPath-Ausdrücke mit dem xpathtester und der Datei cd-collection.xml aus. Wähle zu jedem Ausdruck einen passenden Kon-Knoten aus. child::cd child:: child::song attribute::year 9

Achsen root presentation status date author toc ilist descendant:: 10

Achsen, cont. root presentation status date author toc ilist ancestor::presentation 11

Achsen, cont. root presentation status date author toc ilist following-sibling:: 12

Aufgaben Probiere die folgenden Ausdrücke mit dem xpathtester aus. Finde wieder geeignete Kon-Knoten. descendant::song ancestor:: following-sibling::cd preceding-sibling::song following::song preceding::song 13

Node Tests Auswahl von Knoten entlang der gewählten Achse: axis::node() axis::* axis::() alle Knoten entlang der Achse alle geeigneten Knoten alle Text-Knoten Achtung: < toc="yes"> ist Vaterknoten von toc parent::node() aber: toc nicht Kindknoten von toc / child::node() 14

Node Tests, cont. root presentation status date author toc ilist descendant::node() 15

Node Tests, cont. root presentation status date author toc ilist descendant::* 16

Node Tests, cont. root presentation status date author toc ilist descendant::() 17

Node Tests, cont. root presentation status date author toc ilist ancestor::* 18

Aufgaben Probiere diese XPath-Ausdrücke aus. Vergleiche die Ergebnisse, die die Ausdrücke zusammen mit verschiedenen Kon-Knoten liefern. descendant::node() descendant::* descendant::() self::node() Wieviele bzw. welche Ergebnis-Knoten liefern diese Ausdrücke, wenn man als Kon-Knoten eine cd wählt? Erkläre die Unterschiede. following-sibling::node() following-sibling::* following-sibling::() Was erwartest Du bei diesem Ausdruck? attribute::() Die cd-knoten sind nicht die einzigen Kinder des collection-knotens. Dazwischen befinden sich noch Text-Knoten, die von den Zeilenumbrüchen und der Einrückung stammen. Obwohl es sich um einen gültigen XPath-Ausdruck handelt, kann er kein Ergebnis liefern. Entlang der Attribut-Achse kann es keine Text-Knoten geben. Gültige Ausdrücke sind hingegen attribute::node() und attribute::* 19

Pfade root presentation status date author toc ilist child::/attribute::toc 20

Pfade, cont. location path besteht aus location steps Knoten-Menge eines location step Kon-Knoten des folgenden location steps werden durch / (slash) getrennt child::/attribute::toc absoluter Pfad: /child::presentation/child::author/child::() 21

Kurzschreibweise abkürzende Syntax: child:: (nichts) attribute:: @ self::node(). parent::node().. /descendant-or-self::node()/ // Pfade wie im Dateisystem /@toc /presentation/author/() 22

Pfade, cont. root presentation status date author toc ilist.///() 23

Aufgaben Wie sehen die zugehörigen XPath-Ausdrücke aus? alle CDs alle Künstler alle Erscheinungsjahre alle Lieder einer CD (wähle eine cd als Kon-Knoten) /collection/cd /collection/cd/artist /collection/cd/@year songlist/song 24

Prädikate (weitere) Einschränkung der Knoten-Menge: [@toc="yes"] ilist/[position()=2] [position()=last()] Welche Knoten werden ausgewählt? /[@toc="yes"] [/@toc="yes"] Prädikat bei jedem location step möglich: [/@toc="yes"]/ilist/[1] logische Operatoren /[not(@toc="yes")] [/@toc="yes" and position()!=last()] 25

Aufgaben Finde die passenden XPath-Ausdrücke zu cd-collection.xml: das erste Lied von jeder CD die Titel aller CDs, die vor 1970 erschienen sind alle Lieder, die zwischen 1970 und 1980 aufgenommen wurden alle CDs, für die das Erscheinungsjahr angegeben ist das letzte Lied aller CDs, die nach 1980 aufgenommen wurden /collection/cd/songlist/song[1] /collection/cd[@year<1970]/ /collection/cd[@year>=1970 and @year<=1980]/songlist/song /collection/cd[@year!= ] /collection/cd[@year] /collection/cd[@year>1980]/songlist/song[position()=last()] /collection/cd[@year>1980]/songlist/song[last()] 26

Funktionen bereits gesehen: position() und last() String-Operationen: /presentation/[contains(, XML )] /presentation/[contains(,concat( X, M, L ))] /presentation/[string-length() < 20] weitere: starts-with, substring-before, substring-after, substring 27

Funktionen, cont. Arithmetische Operatoren: [position() = last()-1] [position() > 2] weitere: Grundrechenarten, Division div, Modulo mod XPath-Ausdruck kann auch zu Zahl, Text oder Boolean evaluieren: count(/presentation/) sum(/prod/weight) concat(@href,".html") 28

Aufgaben Finde die passenden XPath-Ausdrücke zu cd-collection.xml: alle Beatles-CDs das letzte Lied auf jeder Beatles-CD die Titel aller CDs der Beatles und der Rolling Stones jedes zweite Lied einer CD die Anzahl aller Lieder die Anzahl aller Beatles-Lieder Was berechnen die folgenden Ausdrücke: sum(//@year) count(//song) div count(//cd) /collection/cd[contains(artist, Beatles )] /collection/cd[contains(artist, Beatles )]/songlist/song[last()] /collection/cd[contains(artist, Beatles ) or contains(artist, Stones )]/ /collection/cd/songlist/song[position() mod 2 = 0] /collection/cd/songlist/song[position() mod 2 = 1] count(//song) count(/collection/cd[contains(artist, Beatles )]//song) die Summe aller Jahreszahlen die durchschnittliche Anzahl Lieder pro CD 29

Programmieren mit XPath Perl-Modul XML::XPath my $xp = XML::XPath->new(filename => $ARGV[0]); my $pres = ($xp->find( /presentation )->get_nodelist)[0]; print $pres->findvalue( ), "\n"; print $pres->findvalue( author ), "\n"; foreach my $ ($pres->find( )->get_nodelist) { print $->findvalue( ), "\n"; foreach my $ ($->find( ilist/ )->get_nodelist) { print $->findvalue(. ), "\n"; } } einfacher als DOM aber: hoher Speicherverbrauch 30

Namespaces XML-Sprachen für wiederkehrende Probleme: Tabellen mathematischer Formelsatz genetische Sequenzen... Kombination/Einbettung von Sprachen Beispiel: (X)HTML-Dokument mit Formeln in MathML Problem: Was gehört zu welcher XML-Sprache? 31

Verwendung von Namespaces <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml"> <head>...</head> <body> <p>also sprach Pythagoras:</p> <math xmlns="http://www.w3.org/1998/math/mathml"> <mrow> <msup><mi>x</mi><mn>2</mn></msup> <mo>+</mo> <msup><mi>y</mi><mn>2</mn></msup>... </mrow> </math> </body> </html> 32

alternative Notation von Namespaces <?xml version="1.0"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ml="http://www.w3.org/1998/math/mathml"> <head>...</head> <body> <p>also sprach Pythagoras:</p> <ml:math> <ml:mrow> <ml:msup><ml:mi>x</ml:mi><ml:mn>2</ml:mn></ml:msup> <ml:mo>+</ml:mo> <ml:msup><ml:mi>y</ml:mi><ml:mn>2</ml:mn></ml:msup>... </ml:mrow> </ml:math> </body> </html> 33

Namespaces, cont. namespace prefix beliebig namespace URI ausschlaggebend, muß exakt übereinstimmen <html xmlns:ml="http://www.w3.org/1998/math/mathml"> <ml:msup>...</ml:msup> <html xmlns:mathml="http://www.w3.org/1998/math/mathml"> <MathML:msup>...</MathML:msup> keine Verknüpfung mit Grammatik/Schema URL als identifier extrem schlechte Wahl schlecht mit DTDs zu realisieren 34