[strukturierte Dokumente]
Anne Brüggemann-Klein
TU München
Thema der Vorlesung
Gegenstandsbereich digitale Dokumente
• text-orientiert: elektronische Publikationen [statisch? EBooks, EJournals, Nachschlagewerke]
• text-orientiert: technische Dokumentation [Versionierung und Varianten, interaktiver Zugriff]
• daten-orientiert: strukturierte Daten [s.a. NoSQL Document Databases]
Zentrales Instrument: digitales Dokument als strukturiertes Dokument
• ermöglicht
- Single Source und Cross-Media Publishing
- Sichten, Interaktion
- semantische Verarbeitung
Gesichtspunkte
• Konzepte und Modelle, Sprachen, Systeme, Praktiken
- Engineering-Ansatz – gute Praktiken
- im Web-Kontext
- umgesetzt mit XML (Extensible Markup Language) und XML-Technologien im XStack
EP (DocEng) | Themen und Struktur | Sommer 2020 2
Grobstruktur: Thematischer Aufbau plus Zeitplan
Woche 1 * Teil I Motivation, Hintergrund: Vogelperspektive auf strukturierte Dokumente
Wochen 2–4 * Teil II Modellierung und Kodierung strukturierter Dokumente
Woche 5 Review Konsolidierung, Vertiefung und Übung (Erwerb praktischer Kompetenz)
Wochen 6–7 * Teil III Schemasprachen für strukturierte Dokumente
Woche 8 Review Konsolidierung, Vertiefung und Übung (Erwerb praktischer Kompetenz)
Wochen 9–11 * Teil IV Bearbeitung von strukturierten Dokumenten
Woche 12 Review Konsolidierung, Vertiefung und Übung (Erwerb praktischer Kompetenz)
Woche 13 * Teil V Interaktion mit strukturierten Dokumenten in Web-Anwendungen (XStack)
Woche 14 Review Konsolidierung und Klausurvorbereitung
einheit telNr
Feuerwehr 112
Werkfeuerwehr Garching 112
• Begriffe
- Markup: Markierungen, die in Textstrom eingebettet sind um besondere Funktion der markierten
Textbereiche anzuzeigen, z.B. Markierungen <mobil> und </mobil> für Textbereich 089 289 112
- Deskriptives Markup: „sprechendes“ Markup, das eine Funktion semantisch klassifiziert, z.B.
<mobil> und </mobil> anstelle von <feld12> und </feld12>
XStack
• Aus Rohdaten generierte statische Visualisierung / Darstellung in Web-Browsern u.a. Clients
[HTML/CSS, PDF, Graphiksprachen (SVG), Formularschnittstellen, "rohes" XML ± CSS]
• Bearbeitung mit XML-Technologie
[Datenbankabfrage, Filterung, Formatkonvertierung, dynamische Visualisierung]
XLink DTD,
Definition von XMLSchema,
Beziehungen Schematron,
XML
Relax NG
Kodierung
XPath und Dokumente
XQuery XForms
Abfrage von Formulare
Dokumenten
XSLT
Aufbereitung SAX, DOM
Dokumente Interfaces / APIs
SCXML
Dynamik
à Glossar
** Prinzipien und Praktiken zum Umgang mit Dokumenten, die gewisse Qualitätskriterien sicherstellen
* Struktur von ungeordneten Name-Werte-Paaren, in der die Namen (Strings) als Schlüssel fungieren
und deshalb eindeutig sein müssen. Die Werte können beliebige Objekte sein.
Anne Brüggemann-Klein
TU München
Was ist ein Dokument konzeptuell / philosophisch
Grundsätzlich, konzeptuell nach David Levy: "A Thing that Talks"
Artefakt mit folgenden Charakteristika
• beliebiges Material:
physisch/magnetisch/elektronisch, analog/digital
• hält und reproduziert (sprachliche) Information (Sachverhalt)
• Lebenszyklus: unabhängig von Zeit und Ort
- transportabel
- dauerhaft
Anne Brüggemann-Klein
TU München
Was ist XML, die Extensible Markup Language
Extensible Markup Language (XML)
• W3C Recommendation, 1.0 Fifth Edition, 26. Nov 2008
• https://www.w3.org/TR/xml/
Dokumentenformat des W3C für Webdokumente
Kleine Schwester von SGML für technische Dokumentation, zugeschnitten auf das Web
Markupsprache zur Kodierung von strukturierten Dokumenten mit eingebettetem,
deskriptivem Markup (im Web und außerhalb) à Industriestandard
Der heute eingeführte Ausschnitt von XML und von dem Datenmodell XML Information Set entspricht
MicroXML
• https://dvcs.w3.org/hg/microxml/raw-file/tip/spec/microxml.html
• Uche Ogbuji: Simplifying XML: MicroXML. https://www.xml.com/articles/2017/06/03/simplifying-xml-
microxml/
<date>
<year>2019</year>
<month>10</year>
<day>29</day>
</date>
Anne Brüggemann-Klein
TU München
Arbeiten mit Code, Werkzeuge
Konzepte der Vorlesung sind umgesetzt in spezifischen Sprachen, die von spezifischen Werkzeugen
unterstützt werden (z.B. XML, XSLT, XQuery)
Die Konzepte werden mit Code-Beispielen illustriert
Anforderungen
• Verständnis der zugrundeliegenden Konzepte
• Lesendes Verständnis von Code-Beispielen, Verständnis des Zusammenhangs zwischen Beispielen
und Konzepten
Das Verständnis und die Fähigkeit, eigene Übungsaufgaben zu erstellen, wird gefördert, wenn Sie
auch aktiv Code erstellen oder zumindestens Code modifizieren à Werkzeuge?
• Online-Werkzeuge, z.B. freeformatter.com, https://jsonformatter.org/xml-parser
• eigene XML-Entwicklungsumgebung, z.B.
- oXygen, eventuell mit Testlizenzen
- IntelliJ und VisualCode (Anleitungen von Philipp Ulrich in Moodle)
- Eclipse (Anleitung als Teil der Master Thesis Stoilas in Moodle)
Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name
Anne Brüggemann-Klein
TU München
Alternative Umsetzungen für deskriptives Markup
Word mit Formatvorlagen (u.ä. Systeme)
• Markup deskriptiv, aber nicht eingebettet (proprietäre Datenstruktur im Hintergrund)
• Datenmodell nicht zugänglich
• einziger unterstützter Use Case: Flexibilität bei Formatierung
(auch auch das nur in Grenzen)
LaTeX
• deskriptives Markup nur bei oberflächlicher Betrachtung (Markup wird interpretiert)
• zentraler unterstützter Use Case: Flexibilität bei Formatierung
• Domäne wissenschaftliche Publikation
JSON (JavaScript Object Notation)
• deskriptives Markup für Daten (ungeeignet für Text)
• zentraler Use Case: Serialisierung / Deserialisierung von Javascript-Objektdaten zum
standardisierten Datenaustausch. und zur Verarbeitung mit JavaScript
EP (DocEng) | Alternativen Markup und Strukturierungen | Sommer 2020 2
Strukturierungsmechanismen andere Kontexte
In Datenbanken (relationales Modell): Tabellen
• bestehen aus Datensätzen mit Attributen
• keine weitere hierarchische Untergliederung
• Verknüpfung von Tabellen über Attributwerte (Schlüssel und Fremdschlüssel)
• Attribute nehmen elementare Information auf: primäre Rolle
In OO-Programmierung: (z.B. Java): Klassen, Objekte
• bestehen aus Attributen
• Attributwerte können Objekte sein (Verweise), sind also selbst wieder strukturiert
(freie Strukturen definierbar)
• Attribute nehmen strukturierte Information auf: primäre Rolle
• Verknüpfung von Klassen über Attributwerte (Verweise)
<cat:Katalog AutorIn=´ABK´
xmlns:cat=´http://www.DtBibliothek.de´
xmlns:bk=´http://www.BVDtBuchhandel.de´
xmlns:nm=´http://www.LinkedIn.com´>
<cat:Titel>Neuanschaffungen Mai 2000</cat:Titel>
<bk:Buch>
<bk:Titel>Green Eggs and Ham</bk:Titel>
<bk:AutorIn>
<nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName>
</bk:AutorIn>
</bk:Buch>
</cat:Katalog>
<cat:Katalog AutorIn=´ABK´
xmlns:cat=´http://www.DtBibliothek.de´
xmlns:nm=´http://www.LinkedIn.com´>
<cat:Titel>Neuanschaffungen Mai 2000</cat:Titel>
<bk:Buch
xmlns:bk=´http://www.BVDtBuchhandel.de´>
<bk:Titel>Green Eggs and Ham</bk:Titel>
<bk:AutorIn>
<bk:Titel
xmlns:bk=´http://www.LinkedIn.com>Dr.</bk:Titel><nm:NName>Seuss</nm:NName>
</bk:AutorIn>
</bk:Buch>
</cat:Katalog>
<Katalog AutorIn=´ABK´
xmlns=´http://www.DtBibliothek.de´
xmlns:bk=´http://www.BVDtBuchhandel.de´
xmlns:nm=´http://www.LinkedIn.com´>
<Titel>Neuanschaffungen Mai 2000</Titel>
<bk:Buch>
<bk:Titel>Green Eggs and Ham</bk:Titel>
<bk:AutorIn>
<nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName>
</bk:AutorIn>
</bk:Buch>
</Katalog>
<Katalog AutorIn=´ABK´
xmlns=´http://www.DtBibliothek.de´
xmlns:nm=´http://www.LinkedIn.com´>
<Titel>Neuanschaffungen Mai 2000</Titel>
<Buch xmlns=´http://www.BVDtBuchhandel.de´ >
<Titel>Green Eggs and Ham</Titel>
<AutorIn>
<nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName>
</AutorIn>
</Buch>
</Katalog>
<Katalog AutorIn=´ABK´
xmlns:bk=´http://www.BVDtBuchhandel.de´
xmlns:nm=´http://www.LinkedIn.com´>
<Titel>Neuanschaffungen Mai 2000</Titel>
<bk:Buch>
<bk:Titel>Green Eggs and Ham</bk:Titel>
<bk:AutorIn>
<nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName>
</bk:AutorIn>
</bk:Buch>
</Katalog>
<Katalog AutorIn=´ABK´
xmlns:bk=´http://www.BVDtBuchhandel.de´
xmlns:nm=´http://www.LinkedIn.com´
xmlns=´´>
<Titel>Neuanschaffungen Mai 2000</Titel>
<bk:Buch>
<bk:Titel>Green Eggs and Ham</bk:Titel>
<bk:AutorIn>
<nm:Titel>Dr.</nm:Titel><nm:NName>Seuss</nm:NName>
</bk:AutorIn>
</bk:Buch>
</Katalog>
Kontakte
erstelltAm 2017-01-01
geändertAm 2017-10-01
Kontakt
Kontakt
http://www.maudpowell.org
Maud Powell was the⊔ em ⊔native-born American violinist ... Ysaÿe ... composers.
first
EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 6
... für dieses XML-Dokument
/ /
Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name
Zeichentabelle Code-Raum
Code Point, (Code-) Position Hex-Ziffer
Kodierungsformat Byte
Anne Brüggemann-Klein
TU München
Zeichenkodierung, Unicode und XML ...
Unicode bzw. äquivalenter ISO-Standard ISO/IEC 10646
• definiert einen universellen Zeichensatz, der alle Schriften der Welt abdecken soll:
Universal Character Set (UCS)
• definiert eine Zeichentabelle oder Kodetabelle, die jedem Zeichen in UCS eine
(Code-) Position (einen Code Point) zuordnet (eine mathematische Zahl)
Einige Parameter
• maximale Zahl von Zeichen in UCS: 1.114.112 oder 17×256×256 oder 17×216
• Code-Raum (Zahlenbereich, aus dem Code Points entstammen) ist 0–1.114.111
1 0001 9 1001
3 0011 B 1011
• Paar von Hex-Ziffern (Adresse) in 8 Bit oder einem Byte speicherbar 7 0111 F 1111
Anne Brüggemann-Klein
TU München
Kodierungstabelle vs. Kodierungsformat
Position in UCS-Kodierungstabelle Zahl im mathematischen Sinne, ausgedrückt mit Hex-Ziffern
Positionen zur Speicherung unterschiedlich in Bits und Bytes kodierbar (Kodierungsformat!)
• es gibt mehrere Methoden und damit mehrere Kodierungsformate für Unicode ! ! !
Warnung
• Unicode-Datei immer in spezifischen Kodierungsformat
Analogie: Kodierung ganzer Zahlen
• Dualzahl mit Vorzeichen-Bit
• Einerkomplement
• Zweierkomplement Ein Byte wird durch
Einfachste (und ungebräuchliche) Formen: Dualzahlkodierung zwei Hex-Ziffern
mit 2 oder 4 Byte bzw. 16 oder 32 Bit: UCS-2 und UCS-4 beschrieben
• Achtung: UCS-2 kodiert nur Zeichen in BMP,
UCS-4 ist sehr verschwenderisch mit Platz
EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 2
Zeichenpositionen in Bits und Bytes …
Kodierungsformat UTF16
stellt jede gültige Position im Bereich 0 bis FFFF kanonisch durch ein Doppel-Byte dar
(UCS2-Transparenz)
stellt Positionen im Bereich 10000 bis 10FFFF (20 Bit) mit Hilfe zweier Surrogatpositionen dar
hoher Surrogatbereich D800 bis DBFF: 110110xx xxxxxxxx
niedriger Surrogatbereich DC00 bis DFFF: 110111xx xxxxxxxx
stellt Position P im Bereich 10000 bis 10FFFF dar durch die kanonische Bitdarstellung der beiden
Surrogatpositionen H und L, wobei
H = (P-10000) DIV 400 + D800 und
L = (P-10000) MOD 400 + DC00
Kodewort nach UTF-16 ist
• ein Doppel-Byte (keine Surrogatposition), die Position gemäß Dualzahlkodierung kodiert à BMP
• ein Paar von Doppel-Bytes (beide sind Surrogatpositionen), die Position über zusammen 20 Suffix-
Positionen kodiert
3 1110xxxx 10xxxxxx
10xxxxxx 16 FFFF
4 11110xxx 10xxxxxx
10xxxxxx
10xxxxxx 21 1FFFFF
5 111110xx 10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx 26 3FFFFFF
6 1111110x 10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx
10xxxxxx 31 7FFFFFFF
Anne Brüggemann-Klein
TU München
XML und Unicode ...
Der XML-Standard betrachtet ein XML-Dokument auf der untersten Ebene als eine
Folge von Unicode-Zeichen, die gewisse syntaktische Regeln befolgen muss
Wie alle Unicode-Datenströme liegt auch ein XML-Dokument immer in einem konkreten
Kodierungsformat vor.
Rolle eines XML-Parsers
• kodierten Textstrom einlesen und in Folge von Unicode-Zeichen dekodieren
• Folge von Unicode-Zeichen analysieren
- die syntaktischen Einheiten erkennen
- syntaktische Korrektheit überprüfen
- Ergebnis der Überprüfung ausgeben
Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name
Zeichentabelle Code-Raum
Code Point, (Code-) Position Hex-Ziffer
Kodierungsformat Byte
Anne Brüggemann-Klein
TU München
Schemasprache und Schema / Strukturvorgabe ...
Was tut ein Schema / eine Strukturvorgabe ?
• definiert die erlaubten Strukturen für eine Klasse von Dokumenten (Instanzen)
mit formalen Mitteln
• gibt die erlaubten Strukturen vor, definiert Regeln / Bildungsgesetze für die erlaubten Strukturen
Was ist eine Schemasprache?
• Sprache, in der man Schemata / Strukturvorgaben für strukturierte Dokumente festlegt
(Meta-Ebene)
Achtung: Dieser ausgegraute Text ist Unisinn (siehe Video) – Eine korrekte Beschreibung von
Instantiierbarkeit erfordert noch genaueres Nachdenken.
* Vergleiche ähnliche Definitionen in der Theorie der formalen Sprachen für kontext-freie Grammatiken
Verwendung in DTD
<!ELEMENT para %text;>
<!ELEMENT quote %text;>
Anwendung: internes Management DTD, z.B. XHTML, Umgang mit Namespaces
Anpassbarkeit
• Überschreiben von Definitionen in DTDs
- angewendet in DokBook: DTD von OASIS für technische Dokumentation
Plattformunabhängigkeit
• Kapselung des Speicherorts für Ersetzungstext an Definitionsort
Schema / Instanz
Schemasprache def
Strukturvorgabe def
(XML-Dokument,
(z.B. DTD) (konkrete DTD, z.B. konkretes
z.B. für Glossare) Glossar)
Anne Brüggemann-Klein
TU München
Datentyp vs Strukturtyp ...
Schemasprachen für XML-Dokumente unterscheiden Datentypen (in XML Schema Simple Types
genannt) und Strukturtypen (in XML Schema Compex Types genannt)
Beide Arten von Typen beschreiben jeweils eine Menge von Werten
Beispiele
• Datentyp xs:date in XML Schema hat zulässige Werte 2019-01-01 und 2011-09-11,
jedoch nicht 2019-1-1
• Datentyp xs:integer in XML Schema mit zulässigen kodierten Werten 007 und 7
- die Kodierungen unterscheiden sich, die Werte sind gleich
à Schema-Prozessor akzeptiert beide Werte
à Gleichheit relevant in Anwendungen, z.B. für Sortierreihenfolge
Beispiel für Strukturtyp (partiell definiert), anwendbar z.B. auf Element Buch:
• Elemente Vorwort, gefolgt von Folge an Kapiteln, optional gefolgt von Literaturverzeichnis
• mit Attribut geändertAm vom Typ xs:date
• definiert in XML Schema explizit als:
<xs:complexType>
<xs:sequence><xs:element .../>...</xs:sequence>
<xs:attribute name=“geändertAm“ .../>
</xs:complexType>
• In DTD nur implizit als Inhaltsmodell einer Elementdeklaration und als Teil einer Attributdeklaration
EP (DocEng) | Datentypen vs Strukturtypen | Sommer 2020 3
... Datentyp vs Strukturtyp
Beispiel für konkreten Wert aus diesem Strukturtyp (partiell definiert, nicht in XML kodierbar):
< geändertAm=“2019-06-04“>
<Vorwort>...</Vorwort>
<Kapitel>...</Kapitel>
</ >
Deklaration von Element Buch umfasst Namen und den Typ (Festlegung der Struktur),
wie bei Variablendeklarationen in Programmiersprachen
Beispiel für konkrete Instanz von Element Buch, deklariert mit diesem Strukturtyp
(partiell definiert, in XML kodierbar):
<Buch geändertAm=“2019-06-04“>
<Vorwort>...</Vorwort>
<Kapitel>...</Kapitel>
</Buch>
Trennung von Strukturtyp und Elementnamen
Strukturtypen benutzen Datentypen für Attributwerte und reinen Textinhalt
Anne Brüggemann-Klein
TU München
Vordefinierte Datentypen in XML Schema
XML Schema besitzt ca 50 vordefinierte Datentypen
(https://www.oreilly.com/library/view/xml-schema/0596002521/ch04.html)
• xs:string
• xs:date
• xs:integer, xs:float
• xs:ID, xs:IDREF
• ...
Weitere Option (in diesem Block)
• Möglichkeit, in XML Schema eigene
Datentypen zu definieren
Schemasprachen
• DTD: Definition klassisch von logischer Struktur (Elemente, Attribute)
und speziell von physischer Struktur (Entities)
• XML Schema: Definition klassisch von logischer Struktur (Elemente, Attribute)
und speziell von Datentypen (Strings)
Instanz Schematron
Typ Relax NG
Strukturtyp Russian Doll
Datentyp Venetian Blind
Beispiele
• Datentyp xs:date in XML Schema hat zulässige Werte 2019-01-01 und 2011-09-11,
jedoch nicht 2019-1-1
• Datentyp xs:integer in XML Schema mit zulässigen kodierten Werten 007 und 7
- die Kodierungen unterscheiden sich, die Werte sind gleich
à Schema-Prozessor akzeptiert beide Werte
à Gleichheit relevant in Anwendungen, z.B. für Sortierreihenfolge
Beispiel für Strukturtyp (partiell definiert), anwendbar z.B. auf Element Buch:
• Elemente Vorwort, gefolgt von Folge an Kapiteln, optional gefolgt von Literaturverzeichnis
• mit Attribut geändertAm vom Typ xs:date
• definiert in XML Schema explizit als:
<xs:complexType>
<xs:sequence><xs:element .../>...</xs:sequence>
<xs:attribute name=“geändertAm“ .../>
</xs:complexType>
• In DTD nur implizit als Inhaltsmodell einer Elementdeklaration und als Teil einer Attributdeklaration
EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 4
... Datentyp vs Strukturtyp
Beispiel für konkreten Wert aus diesem Strukturtyp (partiell definiert, nicht in XML kodierbar):
< geändertAm=“2019-06-04“>
<Vorwort>...</Vorwort>
<Kapitel>...</Kapitel>
</ >
Deklaration von Element Buch umfasst Namen und den Typ (Festlegung der Struktur),
wie bei Variablendeklarationen in Programmiersprachen
Beispiel für konkrete Instanz von Element Buch, deklariert mit diesem Strukturtyp
(partiell definiert, in XML kodierbar):
<Buch geändertAm=“2019-06-04“>
<Vorwort>...</Vorwort>
<Kapitel>...</Kapitel>
</Buch>
Trennung von Strukturtyp und Elementnamen
Strukturtypen benutzen Datentypen für Attributwerte und reinen Textinhalt
Frage: ist die Kombination von beliebigen Werten für minOccurs und maxOccurs
nicht mächtiger als ?, *, +
Antwort: NEIN (siehe Annotationen in samplesAnnotated.xsd
Anne Brüggemann-Klein
TU München
Organisation von Strukturvorgaben in „Streifen“
Element-D — Typ-D — Element-D — Typ-D …
• Elementdeklaration beinhaltet Typdefinition
• Typdefinition kombiniert Deklarationen von Unterelementen
Anne Brüggemann-Klein
TU München
Raum der Möglichkeiten
Elementdeklaration
• lokal (innerhalb von Typdefinitionen, nicht referenzierbar)
Ausnahme: Einstiegselement, muss immer global deklariert werden
• oder global (auf oberster Schema-Ebene, referenzierbar)
Typdefinition
• lokal (innerhalb von Elementdeklaration, nicht referenzierbar)
Ausnahme: geht nicht für vordefinierte Datentypen
• oder global (auf oberster Schema-Ebene, referenzierbar)
Jede der vier Kombinationen ergibt ein Design Pattern oder Entwurfsmuster
Elementdeklaration
Venetian Garden of
Russian Doll Salami Slice
Blind Eden
Wiederverwendung Elemente P P
Wiederverwendung Typ P P
Kontextabhängige Elemente P P
Unbeschränkte
Schachtelungstiefe P P P
um Transformationsmöglichkeiten auszuschließen
Russian Doll Salami Slice
oder nachzuweisen
Venetian Blind ist das echt allgemeinste oder mächtigste Muster.
Salami Slice und Garden of Eden sind gleich mächtig.
Kein Muster kann nach Russian Doll umgewandelt werden.
Ein beliebiges Schema kann nach Venetian Blind umgewandelt werden.
Elementdeklaration
Text Content
Attributdeklaration (als Teil einer Typdefinition)
Baumdiagramm Kontextknoten
XML Data Model (XDM) Navigation
Sequenz Bezug zu XQuery
Location Path Ausdruck Bezug zu XSLT
Step
Path
Achse
Knotentest
Prädikat
Anne Brüggemann-Klein
TU München
Datenmodelle für XML
Modellierung von XML-Dokumenten
• W3C-Standard XML Information Set
- definiert ein Modell für XML-Dokumente in Form von Komponenten
(Information Items / Knoten) mit Attributen für nähere Beschreibung der Komponenten selbst und
der Beziehungen
- wichtigste Arten von Knoten: Dokumentknoten, Elementknoten, Attributknoten, Textknoten
- ein konkretes XML-Dokument wird durch ein konkretes XML Information Set (Sammlung von
Knoten mit ihren Beziehungen) modelliert
- abstraktes Modell (ohne standardisierte Repräsentation)
• Baumdiagramm
- visualisiert das konkrete XML Information Set für ein konkretes XML-Dokument
- nicht standardisiert
- graphische Repräsentation
Thema wird in XPath Tutorials auf W3Schools und SelfHTML nicht angesprochen,
ist aber wichtig für die Beschreibung der Semantik von XPath:
Wie wird ein XPath- Ausdruck ausgewertet?
Achtung
• Datenmodell XDM ist abstrakt (wie XML Information Set)
• es gibt keine standardisierte Notation für Sequenzen
Query B
• Welche Elemente namens web kommen in dem Dokument vor?
• Ergebnis ist Sequenz von (fiktiven, abstrakten) Referenzen auf
Elementknoten (webMaud, webMidori)
- webMaud ist der Knoten zu <web>www.maudpowell.com</web>
- webMidori ist der Knoten zu <web>www.gotomidori.org</web>
Anne Brüggemann-Klein
TU München
Steckbrief XPath: Navigation
XML Path Language (XPath), W3C Recommendation
Version 1.0: 16. November 1999 (wie XSLT 1.0)
Version 2.0: 23. Januar 2007 (wie XDM, XQuery 1.0, XSLT 2.0) à Alignment
XPath-Ausdrücke
• Hauptfunktion: Adressierung von Teilen von XML-Dokumenten, durch Navigation
durch die hierarchische Struktur und Selektion der Endpunkte der Navigation (Mini-Query-Sprache)
• weitere Funktion: Berechnungen allgemeiner Art
Teilsprache von XQuery, dem SQL für XML (Abfragesprache für XML) à Woche 10
Als Komponente verwendet in XSLT, XLink, XForms, XML Schema, Schematron à Woche 11
Basiert (wie auch XSLT, XQuery) auf Datenmodell XDM zur Beschreibung
von Eingaben, Zwischenwerten, Ergebnissen
Navigation auch in Prädikaten möglich !! Oft mehrere Lösungen für eine Query !!
XML-Ausdruck Vollständigkeit
FLWOR-Ausdruck Beziehung XPath, XQuery, XSLT
Klausel
Evaluierungskontext
Auswertung oder Evaluation
Join
Praxis
• Übungsaufgaben, Moodle-Test
Anne Brüggemann-Klein
TU München
XQuery als W3C Recommendation
XQuery 1.0: An XML Query Language
XML Recommendation: 23. Januar 2007
• wie XDM, XPath 2.0, XSLT 2.0
• wie XQuery Formal Semantics, Serialization u.a.
XQuery 3.0
XML Recommendation: 8. April 2014
XQuery Update Facility 1.0, XQuery and XPath Fulltext 1.0
XML Recommendation: 17. März 2011
Abfragesprache für XML-Daten, vergleichbar mit SQL für relationale Daten
XML (XDM) : XQuery ≈ Relationales Modell : SQL
XML verallgemeinert Relationen (strukturell, textuell)
XQuery verallgemeinert entsprechend SQL
Anne Brüggemann-Klein
TU München
XPath als Teilsprache von XQuery
XPath-Ausdruck ist legales XQuery
• optionaler Prolog mit XQuery-Version
• eventuell weitere Definitionen, z.B. Definition von Variablen und Funktionen,
Präfix-Definitionen für Namensräume etc
Beispiel
In Verzeichnis bookClubRaw auf Moodle: xPathExamples.xq
xquery version "3.0";
doc("bookClubRaw.xml")//book[.//review]/title
<summary>
<bookCount>{count($bookClub//book)}</bookCount>
<avgRating>{avg($bookClub//rating)}</avgRating>
<avgRatingsPerBook>{count($bookClub//rating) div
count($bookClub//book)}</avgRatingsPerBook>
</summary>
Anne Brüggemann-Klein
TU München
Iteration von XML-Ausdrücken
Report mit Angaben über Reviews und Ratings für jedes Buch? à Iteration / Wiederholung
<summary>
{$book/title}
<noReviews>{count($book//review)}</noReviews>
<avgRating>{avg($book//rating)}</avgRating>
</summary>
Anne Brüggemann-Klein
TU München
Szenario „publications“
Semi Join
Anne Brüggemann-Klein
TU München
Wozu dient XSLT ?
XSL Transformations (XSLT) 2.0, W3C Recommendation seit 23. Januar 2007
Programmiersprache zum Transformieren von XML-Dokumenten in andere Formate
• XML à XML (zum Umstrukturieren, als Zwischenschritt)
• XML à XML (zur Formatkonvertierung von Nachrichten oder Geschäftsdaten)
• XML à (X)HTML (zum formatierten Darstellen im Browser)
• XML à SVG (zur Generierung von Geschäftsdaten)
• XML à XSL-FO à PDF (zur seiten-orientierten Formatierung für Ausdruck)
Beispiel DocBook für technische Dokumentation
• Kodierung in XML
• Anzeige in HTML oder PDF, nach Transformation
à guessTheNumberDocumentation auf Moodle
• Gegensatz: Abfrage (und eventuelle Aktualisierung) eines Datenbestands
von XML-Dokumenten à XQuery
EP (DocEng) | XSLT aus der Vogelperspektive | Sommer 2020 2
Steckbrief XSLT …
XSLT zur Bearbeitung von Dokumentendaten
• Paradigma: Transformation (im Gegensatz zu: Abfrage)
[Pipe-Verarbeitung, angelehnt Publikationskette (Kontext Dokumente)] [Abgeschlossenheit]
• Ursprung: Stylesheets (Teil von XSL = XML Style Language, mit XSL-FO, XPath, ohne XQuery)
• Zielsprachen: HTML, XML (z.B. XSL-FO, SVG, XHTML), Text
• Grundlage: Ausdruckssprache XPath
- Adressierung von Teilen des XML-Dokuments
- Konstruktion von XML-Fragmenten durch Berechnung und Transformation
• Grundlage: Datenmodell XDM
- Modellierung / Abgrenzung von Eingaben, Ausgaben, Zwischenergebnissen
Erfahrung: XSLT macht XML operationabel
• historisch war XSLT der erste solche Standard, heute teilt XSLT diese Rolle mit XQuery
• ohne SQL sind Tabellen nichts, ohne XSLT oder XQuery ist XML nichts
XSLT-Prozessor
Anne Brüggemann-Klein
TU München
Rahmen eines XSLT-Programms
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform xmlns:xsl=http://www.w3.org/1999/XSL/Transform
version="2.0">
<xsl:output method="xml" indent="yes"/>
...Templates...
</xsl:transform>
Zwei Bestandteile
• Teil der Zielstruktur, in die transformiert werden soll
- Inhalt des Elementes xsl:template, XML-Struktur
(wörtliches Ergebnis: literal result element, wörtlicher Text)
- durchmischt mit XSLT-Kommandos, die Abhängigkeit von der Quelle definieren,
im einfachsten Fall
<xsl:value-of select = “...Text aus Quelldokument, definiert über XPath...“/>
• Angabe, worauf das Template anwendbar ist
- im Attribut match des Elements xsl:template
- XPath-Ausdruck, der XML-Komponenten in der Quellstruktur lokalisiert
Anne Brüggemann-Klein
TU München
Kooperierende Templates
Transformationsprogramm als Sammlung von Templates mit spezialisierten Attributen match
(z.B. pro Element) mit partiellem Ergebnis (Ergebnis-Skelett)
„Freistellen“ im Ergebnis-Skelett füllbar
• statisch, durch Element xsl:value-of
• dynamisch, durch rekursiven Aufruf weiterer Templates
- gezielt für weitere Elemente relativ zum gerade bearbeiteten "Kontextknoten“
- eventuell abhängig von Bedingungen oder eingebettet in Schleifen für Wiederholungen
Rekursiver Aufruf weiterer Templates mit xsl:apply-templates à Prozessmodell
• Angabe welche Elemente bearbeitet werden, über XPath
- Kontextknoten für Evaluation ist aktuell transformierter Knoten
• Suche nach passendem Template für jedes Element
• Ausführung des passenden Templates für jedes selektierte Element
Templates steuern wechselseitigen Aufruf, nach Einstieg für Template für Wurzelknoten
EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 3
Push-Prinzip am Beispiel
Szenario Shakespeare: filter.xsl
Szenario Peanuts: library2htmlPush.xsl
Anne Brüggemann-Klein
TU München
Prozessmodell am Beispiel
Auf Moodle Ordner xsltBeispieleProzessmodell
• Eingabe sampleDoc.xml
• Ausgearbeitetes Beispiel-Programm firstDemo.xsl
Eingabe / 1 Konfiguration /
3 id id1 rootE 2 1
4 a 5 b id id1 6
text b text
7 8 9
EP (DocEng) | Prozessmodell XSLT | Sommer 2020 3
Von Konfiguration zu Konfiguration
Initiale Konfiguration: Dokumentknoten der Ausgabe, Arbeitsauftrag für Dokumentknoten der Eingabe
• Auswahl Arbeitsauftrag (Reihenfolge egal, da keine Seiteneffekte), Auswahl eines passenden
Templates (Prioritäten-Regelung, Reihenfolge der Templates im Programm „last resort“),
Ausführung dieses Templates
• führt zu nächster Konfiguration à Abbruch wenn keine weiteren Arbeitsaufträge vorhanden
Eingabe / 1 Konfiguration /
3 id id1 rootE 2 1
4 a 5 b id id1 6
7
text b8 9
text
4 a 5 b id id1 6 2 5
text b text
7 8 9
4 a 5 b id id1 6 2 5 2 b
text b text
7 8 9
4 a 5 b id id1 6 2 b rootE b
text b text
7 8 9
Baumdiagramm Kontextknoten
XML Data Model (XDM) Navigation
Sequenz Bezug zu XQuery
Location Path Ausdruck Bezug zu XSLT
Step
Path
Achse
Knotentest
Prädikat