Textnavigation mit XPath

Ähnliche Dokumente
XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

7.2.2 Spezifikation einer Treffermenge

Summer School Digitale Edition

19. März 2014 BERLIN-BRANDENBURGISCHE AKADEMIE DER WISSENSCHAFTEN

XSLT für SAP NetWeaver Process Integration. Transformationssprache für XML Dokumente

XML-Praxis. XPath. Jörn Clausen

Textnavigation mit XPath. Daniel Schopper

XPath Lokalisierspfade Achsen in Lokalisierungsschritten

XML-Praxis. XPath. Jörn Clausen

XML-Praxis. XPath. Jörn Clausen.

Semistrukturierte Daten

Semistrukturierte Daten

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

Dokumentverarbeitung

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

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

Gliederung / Inhaltsüberblick

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

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

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

Seminar: XML und intelligente Systeme

XPath-Abfragen. 8 XPath-Abfragen

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

XQuery 2013 S Seite 1 h_da S

XPath XML Path Language

Textauszeichnung mit XML

Projektseminar "Texttechnologische Informationsmodellierung"

XPATH (XPATH) Lernziele

XML Path Language (XPath)

XML Path Language (XPath)

XQuery. XML Query Language. eine Abfragesprache für XML. Ulrike Henny. IDE Autumn School 2012, Chemnitz

Einführung in XML. Seminarunterlage. Version 3.05 vom

Typologie. XPath unterscheidet zwischen sieben verschiedenen Knoten- Typen.

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

Tag 2 Repetitorium Informatik (Java)

XML Datenbanken Quickstart für die Anfragesprachen XPath und XQuery

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

XML und Dokumentenmanagement

XML Path Language (XPath)

Projektseminar "Texttechnologische Informationsmodellierung"

Seminar Dokumentenverarbeitung

Aufgabe 9.1: Lösung: Block-Nested-Loop-Verbund Index-Nested-Loop-Verbund Sort-Merge-Verbund Hash-Verbund

XPath Accelerator Zusammenfassung

Datentypen: integer, char, string, boolean

XSLT XSL Transformations

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

XSLT XSL Transformations

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Funktionen nur wenn dann

Einführung in die Computerlinguistik

XPath. Udo Kelter

Synchronisationsverfahren für XML-Datenbanksysteme

Pascal Schärli

Objektorientiertes Programmieren (Java)

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

1. Übung zur Vorlesung Service-orientierte Architekturen

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

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

Ausgabe: Abteilungen Summe der Fehltage einer Abteilung. Nur für Mitarbeiter deren Fehltage < 3 Nur Abteilungen deren Fehltage-Summe > 1

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

Einführung in die Programmierung I. 2.4 Felder. Thomas R. Gross. Department Informatik ETH Zürich

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

XML: Anfragen und Transformation

Informatik I Übung, Woche 38

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Vorlesung Datenbanken II SS 2006

Funktionen nur wenn dann

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Klausur "C#" WS 2012/2013

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

Python Intro. Vorsemesterkurs Informatik Praktischer Teil WS2012/13. 2.Oktober Vorkurs Informatik - WS 2012/13

WS2017/ Oktober 2017

2.2 Einfache Datenstrukturen

WS2018/ Oktober 2018

Datenbankabfragen und Datenmanipulation

Repetitive Strukturen

Programmierkurs. Java Programmierkurs Philipp Herzig, B.Sc. 2009

DOM Document Object Model

Es geht also im die SQL Data Manipulation Language.

Einstieg in die Informatik mit Java

Python Intro I. Vorsemesterkurs Informatik Praktischer Teil WS 2013/14. 1.Oktober Vorkurs Informatik - WS 2013/14

Wiederholungsklausur "C#" SS 2013

Programmieren in Java -Eingangstest-

System.out.println("TEXT");

1 Klassen anlegen und Objekte erzeugen

18. Hinweise zur schriftlichen Abiturprüfung 2021 im Fach Informatik

Klausur: Programiermethoden und Techniken

HTTP- SOAP- Schnittstelle

1 Klassen anlegen und Objekte erzeugen

Objektorientierung. Marc Satkowski 20. November C# Kurs

INVENTARNR NAME BENUTZNR

Javakurs für Anfänger

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

Transkript:

Ulrike Henny & Patrick Sahle

Fahrplan XPath: wieso weshalb warum? XPath im Editor XML als Baum XPath: Grundkonzepte XPath: der erste Baukasten XPath: gemeinsame Übungen XPath: der weitere Baukasten XPath: Einzelübungen Folie 2

Xpath: wieso weshalb warum? Daten und Datenstrukturen verstehen und analysieren Daten mit anderen Technologien auswählen und verarbeiten Auswählen von Knoten, Knoten-Mengen, Attributwerten, Textinhalten, Textteilen Vergleichen, Zählen, Berechnen, Umwandeln etc. Folie 3

Folie 4

Folie 5

<Postkarte> <bibliographischeangaben>... </bibliographischeangaben> <dokumentinhalt> <vorderseite> <titel><ort>dortmund</ort>. Hauptbahnhof.</titel> XML als Baum </vorderseite> <rückseite> <adresse> [hier einen schönen Baum malen? Aus der Schöch- <zeile><anrede>fräulein</anrede></zeile> <zeile><empfänger> Lösung?] [vorher <name geschlecht="weiblich"> das XML dazu als Code zeigen?] <vorname>margarete</vorname> <nachname>grogorenz</nachname></name></empfänger> </zeile> <zeile><ort>berlin</ort> S.O. 36</zeile> <zeile>wienerstr. 27.</zeile> </adresse> <haupttext> <zeile><anrede>mein liebes <adressat geschlecht="weiblich"><name><vorname typ="koseform" norm="margarete">gretchen</vorname></name></adressat>!</anrede> </zeile> <zeile>soeben bin ich "<ironisch>glücklich</ironisch>" in <ort>dortmund</ort></zeile> <zeile>angekommen und denke gleich an Dich!!</zeile> Folie 6... als Baum?

XPath Grundkonzepte XPath erlaubt die Konstruktion von Pfadausdrücken Pfade bestehen aus Ketten von Pfadschritten Es gibt Achsen, über die man sich im Baum bewegt Der letzte bzw. äußerste Schritt bestimmt, was ein XPath- Ausdruck zurückgibt Pfade werden von vorne nach hinten abgearbeitet Klammern von innner nach außen aufgelöst Folie 7

XPath Grundkonzepte, Pfadschritte Schritt/Schritt/Schritt Postkarte/dokumentinhalt/rückseite/adresse/zeile/anrede Folie 8

XPath Grundkonzepte, Achsen horizontale und vertikale Achsen Achse::Knotentest * für beliebige Elemente parent ancestor ancestor-or-self child descendant descendant-or-self preceding preceding-or-self preceding-sibling following following-or-self following-sibling attribute self child::postkarte/child::dokumentinhalt/child::rückseite/ child::adresse/child::zeile/child::anrede Folie 9

XPath Grundkonzepte, Achsen abgekürzte Syntax child::elementname = /Elementname parent::* = /.. descendant-or-self::elementname = //Elementname attribute::attributname = /@Attributname self =. Folie 10

XPath Grundkonzepte, Rückgabe ein XPath-Ausdruck kann verschiedene Dinge zurückgeben... Knoten Knoten-Set Sequenz Wahrheitswert Text, String, Name (z.b. von Elementen) Zahl Folie 11

XPath: der erste Baukasten Verkettung von Schritten Achsen Zusammengefasste Ausdrücke: (... ) Bedingungen Knotentest[Bedingung] //zeile[anrede] //zeile[not(@typ= vordruck )] Operatoren and or =!= < > + - * div % Funktionen Folie 12

XPath: Funktionen - Funktionen können mit ihrem Namen aufgerufen werden. - Sie bestehen aus Ihrem Namen und runden Klammern: funktion() - Manche Funktionen erwarten in der Klammer die Übergabe von "etwas" - das kann ein Knoten sein, ein Knotensatz, ein String, eine Zahl - Die Übergaben sind durch Kommata getrennt - funktion(parameter,parameter) - Funktionen geben dann etwas zurück - das kann ein Wahrheitswert sein, eine Zahl, ein String, eine Sequenz Folie 13

XPath: eine Funktion contains(string,string) auf Deutsch: Enthält der erste String den zweiten? Ja oder nein? contains('schnecke','ecke') Rückgabe: true contains(//stempel[2]/datum,'1920') Rückgabe: false //stempel[2]/datum/contains(.,'1920') Rückgabe: false //stempel[contains(.,'20')] das Element "stempel" wird zurückgegeben, das den String '20' enthält //*[contains(stempel,'2009')] das Element wird zurückgegeben, das ein Element stempel enthält, das '20' enthält //haupttext/zeile[contains(anrede,'lieb')]/adressat Beachten: Strings müssen in Hochkomma stehen, Elemente nicht! Folie 14

XPath: der erste Baukasten, Funktionen count() zählt etwas, erwartet eine Sequenz, z.b. Ein Knoten-Set count(xpath) position() gibt die Position eines Knotens an contains() prüft, ob ein Element oder String einen anderen String enthält contains(string,string) string-length() zählt die Länge eines Strings string-length(string) starts-with() prüft, ob ein String mit einem anderen String beginnt starts-with(string,string) not() dreht einen Wahrheitswert um Folie 15

XPath: erste zweite Beispiele count(//ort) Zähle die Menge der Elemente Ort in beliebiger Tiefe des Baumes count(//adresse/zeile) Wieviele Zeilen hat die Adresse? //adresse/zeile[anrede]/position() Die wievielte Zeile der Adresse enthält die Anrede? //haupttext[contains(zeile, herzlich )] Gib mir den Haupttext, der eine Zeile enthält, die herzlich enthält. Rückgabe = Knoten! Vgl. dagegen contains(//haupttextzeile, herzlich ) = Boolean string-length(//empfänger/name/nachname) Wie lang ist der Nachname des Empfängers? //ort[starts-with(., D )] Gib mir alle Orte, die mit D anfangen //name[not(@geschlecht)] Bei welchen Namen fehlt das Attribut geschlecht? Folie 16

XPath: gemeinsame Übungen (Postkarte) Gib mir alle Vornamen Lösung: //vorname Wieviele Zeilen hat der Haupttext Lösung: count(//haupttext/zeile) Was steht in der dritten Adresszeile? Lösung: //adresse/zeile[position()=3] Gib mir die Ortsnamen, die mehr als 6 Zeichen lang sind Lösung: //ort[string-length()>6] Folie 17

XPath: gemeinsame Übungen (Weber) Wieviele Briefe enthält die Datei? count(//tei) Gib mir die Textanfänge, die Du, Ihr oder Sie enthalten (Textanfänge stehen im Element incipit) //incipit[contains(., Du') or contains(., Ihr') or contains(., Sie')] Wieviele verschiedene Bearbeiter gibt es? (Bearbeiter werden im Element change im Attribut who genannt ) count(distinct-values(//change/@who)) Welche Änderungen wurden im Jahr 2012 gemacht? //change(starts-with(@when, 2012 )) Wieviele Änderungen sind für jeden Brief im Durchschnitt festgehalten? (Änderungen stehen in revisiondesc/change) count(//revisiondesc/change) div count(//tei) Folie 18

XPath: der zweite Baukasten, Funktionen substring(string,number,number?) Gib mir von string ab Zeichen number soviele Zeichen, wie im zweiten number angegeben (sonst bis zum Ende) substring-before(string,string), substring-after(string,string) Gib mir eine Teilzeichenkette vor oder hinter einer bestimmten Zeichenkette translate(string,string,string) matches(string,pattern) replace(string,pattern,pattern) distinct-values(sequenz) name()... Verschiedene Werte, jeweils nur einmal max() min() sum() avg() Folie 19

XPath: Einzelübungen (Weber-Briefe) In welchen Repositorien liegen die Briefe eigentlich? (schauen Sie sich mal msidentifier an...) Welche verschiedenen Arten von Anmerkungen gibt es? (Element node mit Attribut type) Geben Sie in den Brieftexten (und nur da) erwähnte Orte aus, die mit B anfangen Extrahieren Sie die Kurztitel der Werke, in denen Briefe bereits gedruckt vorliegen (schauen Sie sich additional/listbibl/bibl an; Erstdrucke sind mit dem Wert firstprint im Attribut n gekennzeichnet; der Haupttitel ist der Teil vor dem Komma) Sie brauchen: substring-before(), starts-with(), distinct-values() Folie 20

XPath: Weiterführende Hinweise XPath bei WP: http://de.wikipedia.org/wiki/xpath Ein Tutorial: http://www.w3schools.com/xpath/ Die Heimat von XPath: http://www.w3.org/tr/xpath Folie 21