Sie sind auf Seite 1von 433

Themen und Struktur EP / DocEng Sommer 2020

[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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Themen und Struktur | Sommer 2020 3


Fortschrittsbalken

W1 I Teil I W2 I Teil II W3 I Teil II W4 I Teil II W5 R W6 I Teil III W7 I Teil III

W8 R W9 I Teil IV W10 I Teil IV W11 I Teil IV W12 R W13 I Teil V W14 R

Legende: WocheX (Instruktion oder Review) Teil Y

EP (DocEng) | Themen und Struktur | Sommer 2020 4


Feinstruktur Instruktionseinheiten ...
Teil I Motivation, Hintergrund – Vogelperspektive auf strukturierte Dokumente
(Woche 1)
Basics Vertiefung
• [W1] Themen und Struktur der Vorlesung • Demo Shakespeare
[strukturierte Dokumente]
• Demo Mondial
• [W1] Modelle für Information
[Modell der strukturierten Dokumente] • Weitere Fallstudien

• [W1] Document Engineering in der Praxis


[XML / XStack]
• [W1] Demo Web-Anwendung im XStack
[bookClub]
• [W1] Trends

EP (DocEng) | Themen und Struktur | Sommer 2020 5


... Feinstruktur Instruktionseinheiten ...
Teil II Modellierung und Kodierung strukturierter Dokumente
(Wochen 2–4)
Basics Vertiefung
• [W2] Modellierung von Information • Darstellung strukturierter Dokumente mit
(Modell der strukturierten Dokumente) - HTML5 und CSS
• [W2] Kodierung von strukturierten Dokumenten - LaTeX
(eingebettetes und deskriptives Markup) - Word
• Darstellung von XML-Dokumenten
• [W3] Kodierung von Dokumenten mit XML
mit CSS
(Elemente, Attribute, Text)
• spezifische XML-Anwendungen
• [W3] Modellieren von XML-Dokumenten
(XML Information Set, Baumdiagramme) - DocBook
- SVG
• [W4] Eindeutige Namen in XML-Dokumenten • weitere Modelle
(XML Namespaces)
- JSON
• [W4] Zeichenkodierung (Unicode) - RDF (Triple)

EP (DocEng) | Themen und Struktur | Sommer 2020 6


... Feinstruktur Instruktionseinheiten ...
Teil III Schemasprachen für strukturierte Dokumente
(Wochen 6–7)
Basics Vertiefung
• [W6] Aufgaben von Schemasprachen • Schemasprachen und Namensräume
• [W6] XML Document Type Definition (DTD) • OO-Modellierung und XML Schema
(logische und physische Struktur)
• Weitere Schemasprachen: Schematron und
• [W6] XML Schema Datentypen Relax NG
• [W7] XML Schema Strukturtypen • Identity Constraints in Schemasprachen
• [W7] Entwurfsmuster für Schemasprachen

EP (DocEng) | Themen und Struktur | Sommer 2020 7


... Feinstruktur Instruktionseinheiten ...
Teil IV Bearbeitung von strukturierten Dokumenten
(Wochen 9–11)
Basics Vertiefung
• [W9] Modellierung von XML-Strukturen • Vertiefung XSLT: funktionale Programmierung
mit XQuery and XPath Data Model XDM
• Formatierung von XML-Dokumenten
• [W9] Lokalisieren von XML-Komponenten mit XSL-FO
mit XPath
• Aktualisieren von XML-Dokumenten mit
• [W10] Abfrage von XML-Dokumenten XQuery Update Facility
mit XQuery
• [W11] Transformation von XML-Dokumenten
mit XSLT

EP (DocEng) | Themen und Struktur | Sommer 2020 8


... Feinstruktur Instruktionseinheiten
Teil V Interaktion mit strukturierten Dokumenten in Web-Anwendungen (XStack)
(Woche 13)
Basics Vertiefung
• [W13] XML-Datenbanksysteme • Erhebung von XML-Daten mit XForms
• [W13] XQuery Module • Definition von Abläufen von XML-Prozessen
mit XProc
• [W13] Client-Server-Kommunikation im XStack
mit RestXQ

EP (DocEng) | Themen und Struktur | Sommer 2020 9


Modelle für Information
[Modell der strukturierten Dokumente]
Anne Brüggemann-Klein
TU München
Hintergrund Modelle für Information
Goldstandard Datenmodell und Bearbeitungssprache im Bereich Datenbanken und
Informationssysteme
• (1) Relationales Modell mit SQL als Abfragesprache
relational strukturierte Information

einheit telNr
Feuerwehr 112
Werkfeuerwehr Garching 112

• Verlinkung von flachen Tabellen über Schlüssel und Fremdschlüssel


• Datenbankschemata

EP (DocEng) | Modelle für Information | Sommer 2020 2


Weiterentwicklung
Anforderungen bezüglich Flexibilisierung (Struktur, Schema) führen aktuell zu anderen Datenmodellen
und Verarbeitungssprachen: NoSQL, Triple Store
• (2) Modell der semistrukturierten Dokumente
• Trotz „Dokument“ im Namen: auf strukturierte Daten zugeschnitten, nicht auf textorientierte
Information
semistrukturierte, datenorientierte Information
Kodierung in XML Kodierung in JSON
<telBuch> {telBuch:
[
<eintrag>
{
<einheit>Feuerwehr</einheit> einheit: "Feuerwehr",
<telNr>112</telNr></eintrag> telNr: "112"
<eintrag> },
{
<einheit>Werkfeuerwehr Garching</einheit>
einheit: "Werksfeuerwehr Garching",
<telNr>112</telNr> telNr: "112",
<mobil>089 289 112</mobil> mobil: "089 289 112",
<web>https://www.feuerwehr.tum.de/</web> web: "https://www.feuerwehr.tum.de/"
}
</eintrag>
]}
</telBuch>

EP (DocEng) | Modelle für Information | Sommer 2020 3


Gegenstandsbereich der Vorlesung ...
In EP / DocEng: eigentlicher Dokumentenansatz mit passendem Datenmodell
• (3) Modell der strukturierten Dokumente unterstützt uniform textorientierte Information (Fließtext,
mixed content) UND strukturierte Daten durch Markup
strukturierte, textorientierte Information
Kodierung in XML
<telBuch>
<p>Die Telefonnummer der Feuerwehr ist <telNr>112</telNr>.</p>
<p>Die Telefonnummer der Werkfeuerwehr Garching ist
<telNr>112</telNr>, vom Mobiltelefon aus <mobil>089 289 112</mobil>.
Die Einrichtung hat eine Web-Seite unter <web>https://www.feuerwehr.tum.de/</web>.</p>
</telBuch>

• 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>

EP (DocEng) | Modelle für Information | Sommer 2020 4


Strukturierte, textorientierte Information
Mary Holstege, MarkLogic Corporation. Big, Fast XQuery: Enabling Content Applications.
Bulletin of the IEEE Computer Society Technical Committee on Data Engineering 2008.
http://sites.computer.org/debull/A08dec/marklogic.pdf.

EP (DocEng) | Modelle für Information | Sommer 2020 5


... Gegenstandsbereich der Vorlesung ...
Im Zentrum des Document Engineering: klassische Dokumente, die Struktur UND freien Text oder
Fließtext enthalten können, also Textbestandteile, die keine eigene Kategorisierung oder semantische
Klassifizierung haben (text-orientierte Dokumente).
Ein bekanntes Datenmodell und Format für strukturierte (textorientierte) UND für semi-strukturierte
(datenorientierte) Dokumente:
eXtensible Markup Language (XML)
• deskriptives Markup für hierarchische und annotierte Strukturierung
von Fließtext und Daten
• mit und ohne Schema einsetzbar
• spezialisierte Sprachen und Werkzeuge zur Bearbeitung (XML-Technologie, XStack)

EP (DocEng) | Modelle für Information | Sommer 2020 6


... Gegenstandsbereich der Vorlesung
Ein bekanntes Datenmodell und Format im Bereich NoSQL, für semistrukturierte Dokumente:
Javascript Object Notation (JSON)
• flexible Strukturierungsmöglichkeiten (Arrays, Maps)
• keine Berücksichtigung von Fließtext, mixed content
(jede Informationseinheit ist markiert), damit NUR datenorientiert
• Bearbeitung durch Programme (hauptsächlich in JavaScript),
keine spezialisierten Sprachen und Werkzeuge

EP (DocEng) | Modelle für Information | Sommer 2020 7


Document Engineering in der Praxis
[XML / XStack]
Anne Brüggemann-Klein
TU München
X fü
(eX
ten r
Fle sib
Xib le)
litä
t
Klassische text-orientierte Dokumente
Im Zentrum des Document Engineering: klassische Dokumente, die Struktur UND freien Text oder
Fließtext enthalten können, also Textbestandteile, die keine eigene Kategorisierung oder semantische
Klassifizierung haben (text-orientierte Dokumente).
‼ Charakteristik von klassischen text-orientierten Dokumenten
- Kategorisierung / semantische Klassifizierung für die Struktur
- hoher Anteil von freiem Text/Fließtext (ohne Kategorisierung, semantische Klassifizierung)
- Bedarf nach speziellen Tools
(Gliederung, Navigation, Formatierung, Volltextsuche, Editieren)
‼ Erheblicher Anteil von Wissen / Information steckt
frei formuliert in klassischen text-orientierten Dokumenten, nicht formalisiert in Datenbanken
- Geschäftsinformation, technische Dokumentation, wissenschaftliche Literatur, Google Books,
Stack Overflow, Wikipedia, …
‼ Randfall: daten-orientierte Dokumente, ohne Fließtext aber mit freier Strukturierung
‼ Uniforme
Datenmodelle (Modell der strukturierten Dokumente), Sprachen und Tools aus klassischer
Dokumenten-Sicht UND aus Datensicht möglich: XML und XML-Technologie / XStack

EP (DocEng) | Praxis mit XML | Sommer 2020 2


Was leisten XML und der XStack?
Was ist ein geeigneter Ansatz / ein geeignetes Datenmodell,
um klassische Dokumente und klassische Daten integriert für "Knowledge Work", Analytics, flexible
Visualisierung zugänglich zu machen?
‼ Ansatz des deskriptiven Markups ermöglicht einheitliche Kodierung von klassischen Dokumenten
und von Daten
‼ Deskriptives Markup wird standardisiert umgesetzt mit XML
(eXtensible Markup Language) und Satelliten-Standards (XML-Technologien, XStack)
• XML als Sprache zur Kodierung von klassischen Dokumenten und klassischen Daten und allen
Mischformen
• XStack als Technologie-Stack zur Bearbeitung
von XML-kodierten Dokumenten / Daten, lokal und im Web X fü
(eXt r
ens
FleX ible)
iblit
ät

EP (DocEng) | Praxis mit XML | Sommer 2020 3


Was genauer leisten XML und der XStack?
XML
• Kodierung von Dokumenten in XML (eXtensible Markup Language, Standard des W3C)
• Modellierung in XML Schema und anderen XML-basierten Schemasprachen
• Speicherung in XML-Datenbanken (natürlich verteilt möglich)

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]

XML und XML-Technologien im XStack standardisiert durch W3C


EP (DocEng) | Praxis mit XML | Sommer 2020 4
Beispiele
• Daten für bookClub à bookClubRaw.xml
- Formatierte Anzeige durch Verlinkung eines CSS-Stylesheets
- Ausblick Web-Anwendung bookClub
• Wissenschaftliches Paper à guessTheNumberDocumentation.xml
- Formatierung nach HTML und PDF mit XSLT / XSL-FO
• Shakespeare-Dramen à hamlet.xml
- Abfrage mit XSLT
- Visualisierung mit D3js, z,B. welche Rollen sind in Hamlet,
welche hat den meisten Text ?
• Mondial Datenbank à mondial.xml
- Abfragen mit XQuery, z.B.: was sind die zehn bevölkerungsreichsten Städte ?

XML und XML-Technologien im XStack standardisiert durch W3C


EP (DocEng) | Praxis mit XML | Sommer 2020 5
XStack Power für Blackjack
• Daten für Spielstand (Karten, Einsätze, Spielphase)
- rein logisch XML-kodiert, in Datenbank gespeichert
• Visualisierung, GUI
- mit XSLT aus Daten generiert, XML-basiert in SVG kodiert, im Browser dargestellt
• Spielzüge
- in XQuery programmiert, unter Zugriff auf Daten in Datenbank
- durch Links und RestXQ-Annotationen aufgerufen
- in Datenbank ausgeführt

EP (DocEng) | Praxis mit XML | Sommer 2020 6


Werkzeugkiste XStack
XDM, Infoset
Modellierung
XHTML CSS
Kodierung
SVG ePUB
Stylesheets
DocBook

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

EP (DocEng) | Praxis mit XML | Sommer 2020 7


Einordnung Woche 2
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
Rückblick und Vertiefung Woche 1
Vogelperspektive auf Inhalt der Vorlesung

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 2


Begriffe Woche 1
Strukturierte Dokumente Datenmodell: relational strukturierte Information
Inhalt, Inhaltstext Datenmodell: semistrukturierte, datenorientierte
Information
(Logische) Struktur
Datenmodell: strukturierte, textorientierte
Markup, eingebettetes Markup, Information
deskriptives Markup
XML, XML-Technologie, XStack
Kodierung von strukturierten Dokumenten,
Rolle von XML JSON
Format, formatierte Präsentation, Visualisierung NoSQL und Multi-Modell Datenbanksysteme
Formatvorlage, Stylesheet, CSS
Formatierung und andere Verarbeitungsformen
Semantische Verarbeitung

à Glossar

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 3


Zusammenfassung Woche 1 ...
Leitfragen
• In welchem Zusammenhang stehen die folgenden Begriffe: Document Engineering, strukturiertes
Dokument, (logische) Struktur, Fließtext, Daten, Kodierung, deklaratives Markup, Sprache,
Werkzeug, Standardisierung, Bearbeitung?
• Welche Rolle spielen XML, XML-Technologien und der XStack im Document Engineering?
• Welche Rolle spielen XML, XML-Technolgien und der XStack wenn es doch relationale
Datenbanksysteme mit SQL und NoSQL-Datenbanksysteme mit JSON gibt?
• Wie bedeutend sind XML und XML-Technologien?

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 4


... Zusammenfassung Woche 1 ...
Zusammenfassung ...
• Im Zentrum des Document Engineering* stehen klassische Dokumente, die Struktur UND freien Text
oder Fließtext enthalten, also Textbestandteile, die keine eigene Markierung oder semantische
Klassifizierung haben (text-orientierte Dokumente).
• NB* Document Engineering
- Prinzipien und Praktiken zum Umgang mit Dokumenten,
die gewisse Qualitätskriterien sicherstellen
- Document Engineering : Software Engineering = Dokument : Programm

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 5


... Zusammenfassung Woche 1 ...
... Zusammenfassung ...
• Die logische Struktur kann durch eingebettetes Markup angegeben werden
(hier in der Sprache XML)
• <p>Die Telefonnummer der Feuerwehr ist <telNr>112</telNr>.</p>
- Wir haben Kategorisierung / semantische Markierung für den gesamten Absatz und für die
Telefonnummer selbst, nicht aber für den restlichen Text.
à. text-orientierte Information
• <eintrag><einheit>Feuerwehr</einheit><telNr>112</telNr></eintrag>
- Jede Informationseinheit hat ihre eigene Markierung, es gibt keinen freien Text.
à daten-orientierte Information

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 6


„Echte“ strukturierte, textorientierte Information

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 7


... Zusammenfassung Woche 1
... Zusammenfassung
• XML ist eine Sprache, in der klassische text-orientierte UND daten-orientierte Dokumente kodiert
werden können.
• XML als Sprache basiert auf der Idee des eingebetteten Markups: Textbereiche werden mit in den
Text eingestreuten Anfangs- und Endemarkierungen kategorisiert oder semantisch markiert (siehe
<telNr>...</telNr>).
• Die Markierungen beschreiben den markierten Bereich über Namen.
à deskriptives Markup, Selbstbeschreibung
• XML als Sprache dient lediglich der Kodierung von klassischen Dokumenten und klassischen Daten
sowie aller Mischformen. Zur Bearbeitung der XML-kodierten Dokumente / Daten gibt es weitere
Sprachen und Werkzeuge, rund um XML, die sogenannten XML-Technogien.
• Die XML-Technologien ermöglichen Gliederung, Navigation, Formatierung, Volltextsuche, Abfrage,
Datenerhebung usw. Sie bilden einen vollen Stack zu Realisierung von kompletten XML-basierten
Web-Anwendungen, den sogenannte XStack.
• XML und XML-Technologien sind standardisiert und plattformunabhängig implementiert.

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 8


Historisch: strukturiert – semistrukturiert
ð Einfluss Publikationssysteme / technische Dokumentation
- Anforderungen Flexibilität: Zugriffsmöglichkeiten, Verfügbarkeit,
Single-Source Publishing, Datenanalyse und Datenverarbeitung
- Perspektive: von Struktur-Armut (flacher Text*) zu reichhaltiger Struktur,
Ergebnis nennt sich strukturierte Dokumente
ð Einfluss Datenbanksysteme
- Anforderungen Flexibilität: Auflösung der Schema-Bindung,
Integration heterogener Datenbestände
- von strenger Strukturierung zu weicherer Strukturierung,
Ergebnis nennt sich semistrukturierte Daten (... strukturierter als strukturierte Dokumente)
Konversion zu einem Konzept im Document Engineering**, nämlich Modell der strukturierten
Dokumente und deskriptives Markup, aus zwei Richtungen,
umgesetzt u.a. und hauptsächlich mit XML (Extensible Markup Language)
* z.B. ursprüngliches Projekt Gutenberg: urheberrechtsfreie Texte im ASCII-Format (heute HTML),
www.projekt-gutenberg.org

** Prinzipien und Praktiken zum Umgang mit Dokumenten, die gewisse Qualitätskriterien sicherstellen

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 9


Semistrukturierte Daten
Eigenständige und parallele Entwicklung bei semistrukturierten Daten
• NoSQL-Datenbanksysteme
• Dokumentenbasierte Datenbanksysteme
• Strukturierung und Kodierung von Daten mit JSON
JSON = Javascript Object Notation [hier nur äußerst knappe Einführung zur Illustration]
• Serialisierung von Objekten in JavaScript
- können mit JavaScript leicht gelesen und geschrieben werden
• Strukturierung der JSON-Daten als Map* (Object), Array und String
(Datentypen)

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

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 10


JSON vs XML am Beispiel
Semistrukturierte Daten Strukturiertes Dokument mit Fließtext
<eintrag> <p>Die Telefonnummer der Feuerwehr
<einheit>Feuerwehr</einheit> ist <telNr>112</telNr>.</p>
<telNr>112</telNr>
[
</eintrag>
"p",
{ "Die Telefonnummer der Feuerwehr ist ",
"eintrag": { [
"einheit": "Feuerwehr", "telNr",
"telNr": "112“ "112"
} ],
} "."
]
• Reihenfolge der Daten irrelevant à Maps
• Reihenfolge der Daten relevant --> Arrays
• Eindeutigkeit der Namen muss gegeben sein
• Element übersetzt in Array mit Elementnamen
à Abbildung auf Map angemessen und einfach und Textinhalten bzw. Unterelementen als
à XML verbos und unnötig komplex Array-Einträge (eine Option)
à unnatürlich, schwer zu lesen und zu editieren
EP (DocEng) | Einordnung Woche 2 | Sommer 2020 11
Abwägung und Trend
• JSON als Datenformat ungeeignet wenn Fließtext oder sich wiederholende Strukturen vorkommen
• XML verbos und unnötig komplex (aber MikroXML)
• XML schwerer zu parsen als JSON (erfordert eigene Werkzeuge vs Teil von JavaScript)
• Für JSON keine ergänzenden Technologien außer JavaScript
Synthese in Multi-Modell-Ansätzen: NoSQL-Datenbanksysteme mit Unterstützung für verschiedene
Datenmodelle und Abfragesprachen: XML, JSON, Triples, geo-spacial Daten, relationale Daten, binäre
Daten
Vorreiter-System mit starker XML-Tradition: MarkLogic (https://www.marklogic.com)
• Mary Holstege, MarkLogic Corporation. Big, Fast XQuery: Enabling Content Applications.
Bulletin of the IEEE Computer Society Technical Committee on Data Engineering 2008.
http://sites.computer.org/debull/A08dec/marklogic.pdf.
• Fallstudie BBC Dynamic Publishing System zur Berichterstattung zu den Olympischen
Sommerspielen 2012. https://cdn1.marklogic.com/wp-content/uploads/2018/01/scaling-to-olympic-
proportions-121203.pdf

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 12


Weitere Alternativen bei text-orienten Dokumenten
Einsatz von XML. und XML-Technologien verlangt explizite Strukturierung
• Wo kommt das her?
- konvertiert aus anderen Formaten (JSON, CSV (Excel), Word)
- explizit editiert
- Structure Recognition (ähnlich wie Character Recognition)
• Kann man auch mit minimaler Markierung (für Metadaten) oder reinem glattem Text arbeiten?
- ursprünglich Information Retrieval
- Suchmaschinen
- Natural Language Processing, AI-Methoden (z.B. für Klassifizierung)
Muss die Strukturierung immer hierachisch sein?
• Es gibt Anforderungen und Markup-Ansätze für überlappende Strukturen
• Marcoux, Yves, Michael Sperberg-McQueen and Claus Huitfeldt. “Modeling overlapping structures:
Graphs and serializability.” Presented at Balisage: The Markup Conference 2013, Montréal, Canada,
August 6 - 9, 2013. In Proceedings of Balisage: The Markup Conference 2013. Balisage Series on
Markup Technologies, vol. 10 (2013). https://doi.org/10.4242/BalisageVol10.Marcoux01.

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 13


Einsatzbereiche von XML und XML-Technologien
XML als Speicherformat für strukturierte Dokumente, NUR XML geeignet
XML-Technologien für Verarbeitung
• Technische Dokumentation: z.B. W3C-Standards
• Bücher, Journale: z.B. Konferenzserie Balisage
• Digital Humanities: z.B. Shakespeare-Ausgaben und viele andere
- Kodierung im XML-Vokabular der Text Encoding Initiative TEI
XML als Speicherformat für semistrukturierte Daten, XML und JSON geeignet
XML-Technologien bzw JavaScript für Verarbeitung Trend zu JSON
• Konfigurierungsdaten: z.B. Ant
• Katalog-Anwendungen: Filmbibliothek, Buchdaten, Publikationskataloge
• Genom-Sequenzen
• eigene Fallstudie für Lehre: bookClub
• verbreitete Fallstudie für Lehre / Forschung: Mondial

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 14


Was erwartet Sie in Woche 2 ?

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 15


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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 16


Feinstruktur Instruktionseinheiten Teil II
Teil II Modellierung und Kodierung strukturierter Dokumente
(Wochen 2–4)
Basics Vertiefung
• [W2] Modellierung von Information • Darstellung strukturierter Dokumente mit
(Modell der strukturierten Dokumente) - HTML5 und CSS
(eingebettetes und deskriptives Markup) - LaTeX
• [W2] Kodierung von Dokumenten mit XML - Word
(Elemente, Attribute, Text) • Darstellung von XML-Dokumenten
mit CSS
• [W3] Modellieren von XML-Dokumenten
(XML Information Set, Baumdiagramme) • spezifische XML-Anwendungen
• [W3] Eindeutige Namen in XML-Dokumenten - DocBook
(XML Namespaces) - SVG
• weitere Modelle
• [W4] Zeichenkodierung (Unicode)
- JSON
- RDF (Triple)

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 17


Begriffe Woche 2
Strukturierte Dokumente, Extensible Markup Language XML
Modell der strukturierten Dokumente
Element, Attribut, Text
Inhalt, Inhaltstext
Markupsprache,
Logische Struktur Metasprache für Markupsprachen

Markup, eingebettetes Markup, Syntax


deskriptives Markup
Tag, Zeichen-Referenz, Entity-Referenz
Kodierung von strukturierten Dokumenten,
Wohlgeformtheit
Rolle von XML
Format, formatierte Präsentation Parser

Formatvorlage, Stylesheet Datenformat vs. Präsentationsformat

Formatierung und andere Verarbeitungsformen


Semantische Verarbeitung

EP (DocEng) | Einordnung Woche 2 | Sommer 2020 18


Modell der strukturierten Dokumente

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

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 2


Was ist ein Dokument pragmatisch / operationabel
Speziell ein strukturiertes Dokument: etwas, das dem Modell der strukturierten Dokumente folgt
Etablierte Methode der Informatik: Suche nach einem
dem Problembereich angemessenem Modell [Aufbau, Konstruktionsprinzip, Bildungsmuster]
Im Document Engineering etabliertes Modell: Modell der strukturierten Dokumente
• entwickelt in den 80er Jahren
• entstanden in den Bereichen Verlagswesen und
technische Dokumentation (text-orientierte Dokumente)
• auch geeignet für datenorientierte Dokumente (semistrukturierte Daten)
• auch als Grundlage für Informationsverarbeitung
auf Basis von Dokumenten geeignet (XML-Datenbanken)
Grundlage von XML-Technologie
• bezüglich Kodierung und
• bezüglich Bearbeitung strukturierter Dokumente

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 3


Modell am Beispiel (plus Diskussion)

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 4


Modell für Dokumente am Beispiel (abstrakt) …
Beispiel: Formatierung
• Ursprünglich: Direkte Formatierung (hier Kursivschrift) im Dokument
Bitte hinterlassen Sie eine message! [Grund: andere Sprache]
Bitte nur einmal anklicken! [Grund: Betonung]
Wir nennen das eine Pipette. [Grund: Fachbegriff]
• Modell der strukturierten Dokumente:
(1) Markierung mit dem Grund direkt im Text (deskriptiv, logische Struktur)
Bitte hinterlassen Sie eine <foreign lang="en">message</foreign>
Bitte nur <em>einmal</em> anklicken!
Wir nennen das eine <term>Pipette</term>
(2) Tabelle mit Vorschriften zur Umsetzung (Stylesheet)
foreign g setze kursiv
em g setze kursiv
term g setze kursiv
(3) Kombination von logischer Struktur und Stylesheet: Software für Präsentation / Format

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 5


Vorteile des Modells …
Ø Flexibilität [setze Fachbegriffe fett statt kursiv]
Ø Stabilität bei Veränderungen [füge neues Kapitel ein]
Ø Konsistenz innerhalb eines Dokuments
Verhältnis n : 1 [Vorkommen logische Einheit : Regel in Stylesheet]
Ø Konsistenz [ein Stylesheet für verschiedene Dokumente]
Verhältnis 1 : n [Stylesheet : Dokument]
Ø Single Source [alternative Stylesheets für ein Dokument]
Verhältnis n : 1 [Stylesheet : Dokument]
Ø Verarbeitbarkeit [liste alle Fachausdrücke für Glossar auf]

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 6


… Modell für Dokumente am Beispiel (abstrakt)
Noch ein Beispiel, Kapazität von Stylesheets: Nummerieren und Referenzieren
• Ursprünglich: Direkte Nummerierung/Referenzierung im Dokument
3 Ernährung …
7 Sport
In diesem Kapitel nehmen wir einiges aus Kapitel 3 wieder auf…
• Modell der strukturierten Dokumente:
(1) Markierung mit dem Grund direkt im Text (deskriptiv, logische Struktur)
<heading id="h.ern">Ernährung</heading> …
<heading id="h.sp">Sport</heading>
In diesem Kapitel nehmen wir einiges aus Kapitel <ref id="h.ern"/>
wieder auf …
(2) Tabelle mit Vorschriften zur Umsetzung (Stylesheet)
heading g setze fett, nummeriere durchgehend
ref g füge Nummer des referenzierten Elements ein
(3) Kombination von logischer Struktur und Stylesheet: Software für Präsentation / Format

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 7


… Vorteile des Modells
Ø Flexibilität [setze Fachbegriffe fett statt kursiv]
Ø Stabilität bei Veränderungen [füge neues Kapitel ein]
Ø Konsistenz innerhalb eines Dokuments
Verhältnis n : 1 [Vorkommen logische Einheit : Regel in Stylesheet]
Ø Konsistenz [ein Stylesheet für verschiedene Dokumente]
Verhältnis n : 1 [Dokument : Stylesheet]
Ø Single Source [alternative Stylesheets für ein Dokument]
Verhältnis 1 : n [Dokument : Stylesheet]
Ø Verarbeitbarkeit [liste alle Fachausdrücke für Glossar auf]

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 8


Definition und Evaluation des Modells

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 9


Modell der strukturierten Dokumente …
Prinzip: Trennung von Daten und Verwendungszwecken wie Präsentation
• allgemeines Informatik-Prinzip: Kapsele, was sich ändert
[z.B. private Attribute in Klassen, Strategy Pattern im Software Engineering]
Idee: Ersetze im ursprünglichen Dokument alle Information,
die mit Verwendungszweck zu tun hat,
• deskriptiv durch den inhaltlichen (semantischen) Kern dieser Information und
• durch (separierbare, wiederverwendbare) Vorschriften zu ihrer Bearbeitung
Ergebnis entspricht Modell der strukturierten Dokumente

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 10


… Modell der strukturierten Dokumente
Zwei Komponenten eines strukturierten Dokuments
• (Text-) Inhalt, Inhaltstext
• Annotation / Markierung von Textbereichen mit semantisch bedeutsamer (deskriptiver)
Metainformation: (logische) Struktur
Kombinierbar mit separater, auswechselbarer Formatvorlage (Stylesheet) für
formatierte Präsentation
Kombinierbar mit weiteren separaten, auswechselbaren und ausführbaren Bearbeitungsvorschriften
für Verarbeitung bis hin zu semantischer Interpretation
Ø Unterstützung semantischer Verarbeitung im Grenzbereich Dokumente vw Daten

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 11


… Vorteile des Modells
Ø Flexibilität [setze Fachbegriffe fett statt kursiv]
Ø Stabilität bei Veränderungen [füge neues Kapitel ein]
Ø Konsistenz innerhalb eines Dokuments
Verhältnis n : 1 [Vorkommen logische Einheit : Regel in Stylesheet]
Ø Konsistenz [ein Stylesheet für verschiedene Dokumente]
Verhältnis n : 1 [Dokument : Stylesheet]
Ø Single Source [alternative Stylesheets für ein Dokument]
Verhältnis 1 : n [Dokument : Stylesheet]
Ø Verarbeitbarkeit [liste alle Fachausdrücke für Glossar auf]

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 12


Umsetzung mit deskriptivem Markup (Prinzip)
Fließtext / Rohdaten anreichern mit Markierungen für die Rolle / Bedeutung / Semantik
• Text-basiertes Format, mit eingebetteten Markierungen (Markup)
• Markierungen deskriptiv, an Bedeutung / Semantik orientiert
• Durch eingebettete Markierungen Selbstbeschreibung
• Freie, nicht durch Schema vorgegebene Strukturierung, auch hierarchisch
• Integration von freien Textinhalten
• Trennung von Daten und Erscheinungsform (Formatierung, Visualisierung)
oder, allgemeiner, von ihrer Verwendung
Formatierte Darstellung gesteuert durch separate Stylesheets
Weitere Verarbeitungen auf Basis des deskriptiven Markups möglich
(Filterungen, Abfragen, Transformationen)

EP (DocEng) | Modell der strukturierten Dokumente | Sommer 2020 13


Kodierung strukturierter Dokumente mit XML

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/

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 2


XML-Syntax am Beispiel (eingeschränkt)
Kodierung von Komponenten Element, Attribut, Text mit Markup (öffnende/schließende Tags)

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 3


Unterscheidung Konzepte und ihre Kodierung
Elemente konzeptionell: benannt, Inhalte von Elementen und Text hierarchisch strukturiert
• kontakte, kontakt, vorname, ...
Elemente kodiert mit XML: Paare von öffnenden und schließenden Markierungen (Tags)
• <vorname>...</vorname>, <img src=“...“/>
Attribute konzeptuell: Name-Werte-Paare als „Attribution“ zu Elementen
• Name: erstelltAm, Wert: 1. Januar 2017
Attribute kodiert mit XML: innerhalb von öffnenden Tags für Elemente
• erstelltAm = “2017-01-01“
Text konzeptionell: Folge von Unicode-Zeichen
Text kodiert mit XML: Folge von Unicode-Zeichen und Referenzen, auch in Form von Referenzen auf
Unicode-Positionen, z.B. y mit Diarese
Speicherung in Unicode Kodierungsformat laut XML-Deklaration, Default ist UTF-8
<?xml version=“1.0“ encoding=“UTF-8“?>
EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 4
Umsetzung Modell der strukturierten Dokumente
Umsetzung der Komponenten des Modells in XML
• Inhalt: Text
• Struktur
- Elemente (Markierung von Bereichen mit logischen Namen)
- Attribute (Qualifizierung der Elemente mit Name-Wert-Paaren)
Freie Verwendung von Namen für Elemente, Attribute (und Referenzen)
à deskriptiv
Freie Textfragmente ohne explizite Markierung erlaubt
à für text-orientierte Dokumente
Freie Textfragmente optional
à für daten-orientierte Dokumente
Flexible hierarchische Strukturierung beliebiger Breite und Tiefe
Kodierung mit eingebettetem Markup: Textstrom aus Inhaltstext und eingebetteten Tags zur
Markierung der Element-Ausdehnung und zur Attributierung der Elemente

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 5


Rolle von Elementen und Attributen in XML ...
Haupt-Strukturierungsmechanismus in XML: Elemente
• bestimmen die hierarchische, baumartige Struktur (Metainformation zu Inhaltstext)
• können Unterelemente und Textinhalt enthalten: primäre Rolle als Container für Information
• Spezialfall bei Textdokumenten: Mixed Content (Text ohne eigene Markierung)
• können durch Attribute weiter qualifiziert werden (Metainformation zur Metainformation)
• können durch Attribute speziellen Typs verlinkt werden (erfordert DTD zur Def. des Typs)
(ID und IDREF, XML Schema Identity Constraints, XLink)
Abgrenzung zu relationalen Datenbanken: dort ist Haupt-Strukturierungsmechanismus die Tabelle mit
Attributen (Spaltenüberschriften)
• Attribute in Datenbankwelt entsprechen Elementen in XML-Welt
• Attribute in XML-Welt enthalten lediglich Information ÜBER die Elemente, an denen sie stehen

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 6


... Rolle von Elementen und Attributen in XML
Wann benutzt man Elemente, wann Attribute?
• Elemente geben die Haupt-Struktur wieder, Attribute machen Aussage ÜBER ein Element
• Attribute können nicht wiederholt werden (Attributnamen in einem Element müssen eindeutig sein)
- bei Bedarf nach Wiederholung à Elemente benutzen
• Attribute können keine Unterstruktur enthalten (bzw. Unterstruktur wird im String des Attributwerts
ad hoc kodiert)
- Beispiel Datumsangabe in Attribut-Form date=“2019-10-29“
- falls standardisierte Strukturierung eines Wertes gewünscht à Elemente benutzen

<date>
<year>2019</year>
<month>10</year>
<day>29</day>
</date>

- s.a. Thema Datentypen in XML Schema

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 7


Syntax, Wohlgeformtheit von XML-Dokumenten
XML-Dokumente müssen bestimmte syntaktische Regeln einhalten, z.B. zur Verwendung von spitzen
Klammern und Elementnamen. Zeichen, die eine Funktion in Markup haben, wie < und &, dürfen im
Inhaltstext nicht direkt verwendet werden (à Entity-Referenzen &lt; und &amp; oder Zeichen-
Referenzen &#x3C; und &#x26;)
Speziell wichtig:
• jedes öffnende Tag <abc> muss ein schließendes Tag </abc> haben
(Ausnahme: Leer-Elemente-Tag <abc/> ohne Inhalt)
• die öffnenden und schließenden Tags müssen eine korrekte Klammerung ergeben (hierarchische
Struktur, keine überlappenden Strukturen), also
<abc><x></abc></x> ist nicht erlaubt !
• die Namen von Attributen innerhalb eines Elements müssen eindeutig sein
• es gibt ein einziges äußerstes Element
Diese speziellen Regeln bestimmen die Wohlgeformtheit eines XML-Dokuments
Syntaktische Korrektheit einschließlich Wohlgeformtheit wird von Parsern
(auch XML-Prozessoren genannt) überprüft
EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 8
XML-Parser
Kernfunktionalität eines Parsers: einfacher Ja/Nein-Check
Zusätzliche Funktionalitäten
• Pretty Printing, Syntax Highlighting, Klappfunktion
• API für Anwendungen
Parser
• Bestandteil von XML-Entwicklungsumgebungen, z.B. oXygen
• Stand-alone Programme, z.B. Xerces von Apache XML in Java, C++, Perl
(https://xerces.apache.org)
• Online-Parser
- https://www.freeformatter.com
- https://jsonformatter.org/xml-parser
• Web-Browser
- Darstellung von XML-Dokumenten
- Interpretation von CSS-Stylesheets
EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 9
Beispiel bookClub
XML-Datei bookClubRaw.xml
• im Editor (Text-Editor oder XML-Entwicklungsumgebung)
• im Browser (ohne CSS-Stylesheet)
• im Browser (mit CSS-Stylesheet)
• auf www.freeformatter.com, https://jsonformatter.org/xml-parser

EP (DocEng) | Kodierung strukturierter Dokumente mit XML | Sommer 2020 10


Pragmatik XML

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)

EP (DocEng) | Pragmatik XML | Sommer 2020 2


XML-Parser
Kernfunktionalität eines Parsers: einfacher Ja/Nein-Check
Zusätzliche Funktionalitäten
• Pretty Printing, Syntax Highlighting, Klappfunktion
• API für Anwendungen
Parser
• Bestandteil von XML-Entwicklungsumgebungen, z.B. oXygen
• Stand-alone Programme, z.B. Xerces von Apache XML in Java, C++, Perl
(https://xerces.apache.org)
• Online-Parser
- https://www.freeformatter.com
- https://jsonformatter.org/xml-parser
• Web-Browser
- Darstellung von XML-Dokumenten
- Interpretation von CSS-Stylesheets
EP (DocEng) | Pragmatik XML | Sommer 2020 3
XML-Editor
Jeder Text-Editor ist geeignet
• TextEdit, TextWrangler, Sublime, Visual Studio Code
• ungeeignet: Word
• Speicherung als Unicode-Datei im Format UTF 8
• im Zweifelsfall nur 7-Bit-ASCII Zeichen (keine Umlaute etc) verwenden,
dann ist das automatisch UTF 8
Alternative: 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)

EP (DocEng) | Pragmatik XML | Sommer 2020 4


Beispiel bookClub
XML-Datei bookClubRaw.xml
• im Editor (Text-Editor oder XML-Entwicklungsumgebung)
• im Browser (ohne CSS-Stylesheet)
• im Browser (mit CSS-Stylesheet)
• auf www.freeformatter.com, https://jsonformatter.org/xml-parser

EP (DocEng) | Pragmatik XML | Sommer 2020 5


Einordnung Woche 3
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
Rückblick und Vertiefung Woche 2
Modell der strukturierten Dokumente,
Kodierung mit XML

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 2


Zusammenfassung Woche 2 ...
Ausgangsfrage: Was ist ein (strukturiertes) Dokument?
Antwort: abstrakt etwas, das dem Modell der strukturierten Dokumente entspricht (VOR Kodierung)
• Komponente Inhaltstext
• Komponente (logische) Struktur, Markierungen oder Metainformation, die den Inhaltstext annotiert
Konkrete Repräsentation von strukturierten Dokumenten
• mittels Markup allgemein (unterliegende Datenstruktur oder in eingebetteter Form)
• deskriptives Markup (manchmal auch deklaratives Markup genannt): beschreibt Rollen unabhängig
vom Verwendungszweck (term vs fett)
Flexibilität des Modells der strukturierten Dokumente
• graphische Formatierung für Dokumente in unabhängigen Stylesheets definierbar
(nicht in das Dokument kodiert)
• semantische Verarbeitung in unabhängigen Verarbeitungsvorschriften definierbar
(nicht in das Dokument kodiert)

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 3


... Zusammenfassung Woche 2
Flexibilitätsvorteile
• konsistente Formatierung innerhalb eines Dokuments und zwischen Dokumenten gleicher Art
• Unterstützung von Single-Source-Anforderungen
• Flexibilität bei Veränderungen
• semantische Verarbeitbarkeit
XML: eine spezielle und zentrale Markup-Sprache (Kodierungsmethode) für strukturierte Dokumente
• kodiert hierachische Strukturen über Inhaltstext
• Struktur über Elemente (gegeben als Name) und ihre Attribute (gegeben als Name-Werte-Paar)
• benutzt eingebettetes Markup (im Idealfall deskriptiv)
• geeignet für text-orientierte und daten-orientierte Information
• Industriestandard, vom W3C standardisiert
• kommt mit Vielzahl von begleitenden XML-Technologien

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 4


Begriffe Woche 2
Modell der strukturierten Dokumente Extensible Markup Language XML
Strukturiertes Dokument text-orientierte und daten-orientierte Information

Inhalt, Inhaltstext Element, Attribut, Text


Logische Struktur Markupsprache,
Metasprache für Markupsprachen
Markup, eingebettetes Markup,
deskriptives Markup Syntax
Kodierung von strukturierten Dokumenten, Tag, Zeichen-Referenz, Entity-Referenz
Rolle von XML
Wohlgeformtheit
Format, formatierte Präsentation
Parser
Formatvorlage, Stylesheet
Datenformat vs. Präsentationsformat
Formatierung und andere Verarbeitungsformen
Semantische Verarbeitung

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 5


Lernergebnisse und Kompetenzen Woche 2 ...
Modell der strukturierten Dokumente
• Die wesentlichen Komponenten des Modell der strukturierten Dokumente nennen und beschreiben
• Den Begriff des eingebetteten Markups erklären
• Die Begriffe Inhaltstext und eingebettetes Markup in Bezug auf Kodierung strukturierter Dokumente
erklären
• Realisierungsmöglichkeiten von strukturierten Dokumenten erläutern, insbesondere in Bezug auf
eingebettetes Markup (mögliche Beispiele zur Illustration sind XML, HTML, LaTeX, Word)
• Wesentliche Unterschiede zwischen XML und HTML erläutern
• Die Rolle von Stylesheets im Zusammenhang mit dem Modell der strukturierten Dokumente erklären
• Erläutern, wie XML-Dokumente mit Hilfe von CSS im Browser formatiert dargestellt werden

EP (DocEng) | Lernergebnisse und praktische Kompetenzen | Sommer 2020 6


... Lernergebnisse und Kompetenzen Woche 2
Kodierung von Strukturen mit XML (Elemente, Attribute, Text)
• Darstellen, wozu XML dient
• Bezug von XML zum Modell der strukturierten Dokumente erklären
• Komponenten von XML-Dokumenten nennen und in XML-Code identifizieren
• Kriterien für Wohlgeformtheit nennen
• Aufgaben eines XML-Parsers (XML-Prozessors) benennen
• Unterscheidung zwischen text-orientierten und daten-orientierten Dokumenten erklären und in
konkretem XML-Code erkennen
• Unterscheidung zwischen logischer und physischer Struktur systematisch und an Beispielen
erklären

EP (DocEng) | Lernergebnisse und praktische Kompetenzen | Sommer 2020 7


Was erwartet Sie in Woche 3 ?

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 8


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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 9


Feinstruktur Instruktionseinheiten Teil II
Teil II Modellierung und Kodierung strukturierter Dokumente
(Wochen 2–4)
Basics Vertiefung
• [W2] Modellierung von Information • Darstellung strukturierter Dokumente mit
(Modell der strukturierten Dokumente) - HTML5 und CSS
(eingebettetes und deskriptives Markup) - LaTeX
• [W2] Kodierung von Dokumenten mit XML - Word
(Elemente, Attribute, Text) • Darstellung von XML-Dokumenten
mit CSS
• [W3] Eindeutige Namen in XML-Dokumenten
(XML Namespaces) • spezifische XML-Anwendungen
• [W3] Modellieren von XML-Dokumenten - DocBook
(XML Information Set, Baumdiagramme) - SVG
• weitere Modelle
• [W4] Zeichenkodierung (Unicode)
- JSON
- RDF (Triple)

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 10


Begriffe Woche 3
Syntax XML Namespaces
Abstraktion Namensraum-Name (Kontext URIs)

Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name

Information Item Namensraum-Definition


(wird auch Präfix-Definition oder Bindung von
Präfix und Namensraum-Name genannt)
Scope oder Gültigkeitsbereich (einer
Namensraum-Definition)
lokales Attribut
globales Attribut

EP (DocEng) | Einordnung Woche 3 | Sommer 2020 11


Alternativen für Markup und Strukturierungen

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)

EP (DocEng) | Alternativen Markup und Strukturierungen | Sommer 2020 3


XML-Anwendungen ...
XML-Anwendung = auf Anwendungsbereich spezialisiertes XML-Vokabular
• oft durch Schemasprache definiert (z.B. XML Document Type Definition DTD, XML Schema)
• XML als Metasprache für Markupsprachen
Vielzahl von standardisierten XML-Anwendungen und zugehörige Tools ...
• DocBook: Vokabular zur Repräsentation technischer Information (vgl LaTeX)
- Beispiel: guessTheNumberDocumentation
- Tools
- Schema-Definition für syntax-gesteuertes Editieren
- Transformationsprogramme für Darstellung als HTML und PDF

• HTML bzw. XHTML: Vokabular zur Repräsentation von Web-Seiten


- Beispiel: viewSource von irgendeiner Web-Seite
- Tools
- Browser zur formatierten Darstellung
- Programmierschnittstellen, z.B. für Javascript im Browser

EP (DocEng) | Alternativen Markup und Strukturierungen | Sommer 2020 4


... XML-Anwendungen
... Vielzahl von standardisierten XML-Anwendungen und zugehörige Tools
• Scalable Vector Graphics (SVG): Vokabular zur Repräsentation von graphischen Objekten
- Beispiel: svgPractices/symbols.svg
- Tools
- Browser und andere Viewer
- Graphik-Editoren mit Speicherformat SVG

Vielzahl von spezialisierteren XML-Anwendungen


• bookClub mit XML-kodierten Daten für Bücher und Reviews
- gefilterte Visulisierung, formular-gesteuertes Editieren von Reviews
• XML-Kodierungen von Konfigurationsdateien
• XML-Kodierung von Nachrichten oder Feeds

EP (DocEng) | Alternativen Markup und Strukturierungen | Sommer 2020 5


Namen in XML-Dokumenten
XML Namespaces
Anne Brüggemann-Klein
TU München
Einordnung
Bisher
• Modell der strukturierten Dokumente mit Inhaltstext und logischer Struktur
- umfasst prinzipiell auch nicht-hierarchische, überlappende Strukturen
• Prinzipielle Umsetzungen des Modells mit eingebettetem, deskriptivem Markup
- u.a. auch LaTeX, HTML
- Word mit Formatvorlagen: deskriptiv, nicht eingebettet
- Markdown oder pures TeX oder pures Word: nicht deskriptiv, (nicht) eingebettet
• Konkrete Markup-Sprache Extensible Markup Language XML
- Syntax: Begriff der Wohlgeformtheit
- Werkzeuge: Parser, Browser, Kombination mit CSS-Stylesheets
- Modelle: Baummodell, XML Information Set à auch in dieser Woche
Heute
• Erweiterung von XML um XML Namespaces: Eindeutigere Namen von Elementen/Attributen
• Erweiterung der Modelle: Baummodell, XML Information Set

EP (DocEng) | XML Namespaces | Sommer 2020 2


XML Namespaces (Elemente)

EP (DocEng) | XML Namespaces | Sommer 2020 3


Problematik von einfachen Namen
Bisher in XML-Anwendungen: einfache Namen für Elemente und Attribute
Konfliktpotential bei Kombination von Vokabularien
Szenarien
• SVG-Graphik oder MathML oder XForms in HTML
- XML-Vokabular für Graphiken (SVG, Scalable Vector Graphics) oder MathML für mathematische
Formeln oder XForms für Formulare soll in verschiedenen Host-Sprachen modular
wiederverwendet werden, z.B. in HTML und in DocBook
• "nativ mehrsprachige“ XML-Vokabularien: XSLT, XML Schema
- XSLT: Kodierung von speziellen Programmanweisungen und allgemeinen
Ergebnisfragmenten in einem Dokument
<template match="book">
<title><value-of select="bookTitle"/></title>
<copyRight>2003</copyRight>
</template>

EP (DocEng) | XML Namespaces | Sommer 2020 4


Typische Lösung bei Namenskonflikten
Schaffung von Namensräumen, also von separaten Namensbereichen,
ähnlich wie bei Fachsprachen
Beispiel Personennamen, z.B. in der Familie Bach
• Eindeutigkeit durch zweite Vornamen (Johann Sebastian vs Söhne Johann Christoph Friedrich vs
Johann Christian), Name des Vaters (Sohn des Johann Ambrosius),
- https://en.wikipedia.org/wiki/Bach_family#Partial_family_tree
- vgl. heutige Namenszusätze (jun., sen.)
Beispiel Klassennamen in Java
• Eindeutigkeit von Klassennamen durch Paketnamen
- z.B. java.util
- Verbindung zu Code über ClassPath und Pfade im Datei-Verzeichnis

EP (DocEng) | XML Namespaces | Sommer 2020 5


Umsetzung in XML à XML Namespaces
Kombiniere einfachen Namen mit URL als Namensraum-Namen zur eindeutigen Identifizierung
(vergleichbar mit Paketnamen in Java)
• URLs wie http://www.in.tum.de/brueggemann-klein oder http://www.tum.de identifizieren eindeutig
„Zuständigkeiten“, die sozial / qua impliziter Vereinbarung respektiert werden
(auch ohne Domain-Namen-Registrierung)
Achtung: Namensraum-Namen / URLs im Kontext von XML sind nur Symbole !
• die URLs müssen nicht auf eine echte Ressource zeigen
- anders als bei Java Paketnamen!
• selbst die Domänen müssen nicht registriert sein
(sind es aber natürlich bei “offiziellen" Namensräumen)
• Gleichheit als Zeichenkette zählt, d.h. http://www.in.tum.de und http://www.IN.tum.de sind
verschiedene Namen für Namensräume (obwohl sie als URLs auf die gleiche Ressource zeigen)

EP (DocEng) | XML Namespaces | Sommer 2020 6


Standardisierte Namensraum-Namen
Standardisierte Namensraum-Namen (Werkzeuge verlangen standardisierte Namen)
• DocBook http://docbook.org/ns/docbook
• XHTML http://www.w3.org/1999/xhtml
• SVG http://www.w3.org/2000/svg
• MathML http://www.w3.org/1998/Math/MathML
• XLink http://www.w3.org/1999/xlink
• XML Schema http://www.w3.org/2001/XMLSchema
• XSLT http://www.w3.org/1999/XSL/Transform
• XML NS http://www.w3.org/XML/1998/namespace
Auch möglich als (verschiedene!) Namensraum-Namen
• http://www.DtBibliothek.de, http://www.dtBibliothek.de

EP (DocEng) | XML Namespaces | Sommer 2020 7


Zuordnung von URLs zu Namen in XML
Syntax von XML Namespaces: Indirekte Zuordnung von Namen zu URLs über Präfixe
Umsetzung, vor allem Kodierung, definiert in W3C-Standard „Namespaces in XML 1.1“
(REC-xml-names11-20040204)

EP (DocEng) | XML Namespaces | Sommer 2020 8


Konstruiertes Beispiel: konzeptuell
Elementnamen sollen den Namensräumen entsprechender Farbe zugeordnet werden
Namenraum für Kataloge: http://www.DtBibliothek.de
Namensraum für Bücher: http://www.BVDtBuchhandel.de
Namensraum für Personennamen: http://www.LinkedIn.com
<Katalog AutorIn="ABK">
<Titel>Neuanschaffungen Mai 2000</Titel>
<Buch>
<Titel>Green Eggs and Ham</Titel>
<AutorIn>
<Titel>Dr.</Titel><NName>Seuss</NName>
</AutorIn>
</Buch>
</Katalog>

EP (DocEng) | XML Namespaces | Sommer 2020 9


Konstruiertes Beispiel: Syntax
XML Namespaces: Markierung von Elementnamen mit Namensraumnamen (URIs)
indirekt über Präfixe, die passend definiert werden

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

EP (DocEng) | XML Namespaces | Sommer 2020 10


Konstruiertes Beispiel: Syntax-Variante
Umdefinieren von Präfixen

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

EP (DocEng) | XML Namespaces | Sommer 2020 11


Aspekte der Kodierung: Name und Scope
Name
• erweiterter Name (konzeptuell): Namensraum-Name + lokaler Name
• qualifizierter Name (syntaktisch): Präfix + lokaler Name (Präfix kann leer sein)
Gültigkeitsbereich (Scope) der Präfixdefinition
• innerhalb des Elements, in dem das Präfix definiert ist, einschließlich des Elements selbst
• Überschreiben der Definition innerhalb der Elementhierarchie möglich
Design-Frage: Wo sollte das Präfix definiert werden ?
• ganz am Anfang ODER
• Prinzip Lokalisierung: da wo es gebraucht wird
Wie soll das Präfix benannt werden?
• grundsätzlich irrelevant für Interpretation des Dokuments
• sprechende Namen sind gute Praxis

EP (DocEng) | XML Namespaces | Sommer 2020 12


Default-Namensraum
Spezialfall Definition von leerem Präfix: Default-Namensraum

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

EP (DocEng) | XML Namespaces | Sommer 2020 13


Default-Namensraum
Spezialfall Definition von leerem Präfix: Default-Namensraum (umdefiniert)

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

EP (DocEng) | XML Namespaces | Sommer 2020 14


Anonymer oder universeller Namensraum
Spezialfall leeres Präfix ohne Definition: Anonymer oder universeller Namensraum:
Catch-all, Namensraum ohne Namen

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

EP (DocEng) | XML Namespaces | Sommer 2020 15


Anonymer oder universeller Namensraum
Spezialfall leeres Präfix ohne Definition: Anonymer oder universeller Namensraum:
Catch-all, Namensraum ohne Namen (mit leerer URL als Namensraum-Name)

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

EP (DocEng) | XML Namespaces | Sommer 2020 16


Aspekte der Kodierung: leeres Präfix
Anonymer, universeller Namensraum: leeres Präfix ohne Namensraum-Zuordnung
à jedes Element ist in einem Namensraum, im Zweifelsfall im universellen, anonymen
Definieren eines Default-Namensraums (lokaler Default)
• mittels des Attributs xmlns (ohne Doppelpunkt)
• Überschreiben der Definition innerhalb der Elementhierarchie möglich
• Rücksetzen der Definition auf anonymen, universellen Namensraum möglich: xmlns=""
Design-Frage: wofür / wann Default-Namensraum ?
• für Vokabular-Inseln
• für das Haupt-Vokabular
Ausblick
• bisher: Namensräume und Element-Namen
• nächster Abschnitt: Namensräume und Attribut-Namen

EP (DocEng) | XML Namespaces | Sommer 2020 17


XML Namespaces (Attribute)

EP (DocEng) | XML Namespaces | Sommer 2020 18


Szenarien für Attribute und Namensräume
Attribute sind typischerweise spezifisch für die Elemente, an denen sie stehen
• <img src="...dateiname..."/>
<h:img src="...dateiname..."/>
Manche Attribute haben element-übergreifende Bedeutung
• XLink: Kodierung von Hypertext-Vernetzung über spezielle XLink-Attribute in
XML-Dokumenten, machen beliebige XML-Elemente link-fähig
<song href="targetURI" role="noten">
Der Herbst, der Herbst, der Herbst ist da.
</song>

XML-Namespaces erlaubt Differenzierung


• Element-spezifische (sogenannte lokale) Attribute gehören zu einem Element,
das in einem Namensraum steht à indirekte Namensraum-Zugehörigkeit
• Element-übergreifende (sogenannte globale) Attribute gehören qua eigenen Rechts
zu einem eigenen Namensraum à direkte Namensraum-Zugehörigkeit
XLink beschreibt globale Attribute wie href, role im Namensraum http://www.w3.org/1999/xlink
EP (DocEng) | XML Namespaces | Sommer 2020 19
Namensräume und lokale Attribute
Attribute ohne Präfix gehören als lokales Attribut zu dem Element, an dem sie stehen. Das Element
gehört zu einem Namensraum (eventuell zu dem anonymen) und das Attribut gehört lokal zu dem
Element. à Normalfall
<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>

EP (DocEng) | XML Namespaces | Sommer 2020 20


Namensräume und globale Attribute
Attribute mit Präfix gehören als globales Attribut qua eigenen Rechts zu einem eigenen Namensraum,
unabhängig von dem Namensraum des Elements, an dem es steht

à Unterscheidung in XML selbst nicht möglich


<cat:Katalog nm: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>

EP (DocEng) | XML Namespaces | Sommer 2020 21


Namensräume und globale Attribute
Variante: Attribut gehört qua eigenen Rechts, als globales Attribut, zu dem gleichen Namensraum wie
das Element, bei dem es steht à erfordert Präfix beim Attribut
<cat:Katalog cat: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>

EP (DocEng) | XML Namespaces | Sommer 2020 22


Zusammenfassung

EP (DocEng) | XML Namespaces | Sommer 2020 23


Funktionalität von XML Namespaces …
Benennung von Namensräumen für Elemente und Attribute mit (logischen) URIs
(vergleichbar mit Paketnamen in Java)
Markierung von Elementnamen mit Namensraumnamen
• Differenzierung
Unmarkierte Attributnamen weiterhin elementspezifisch
Markierung von Attributnamen mit Namensraumnamen
• Neu: Globale, elementunabhängige Attribute
• Beispiele: XLink-Attribute, prinzipiell auch title, lang, src in HTML
Anonymer, universeller Namensraum für Elemente
ohne explizite Namensraumzuordnung

EP (DocEng) | XML Namespaces | Sommer 2020 24


… Funktionalität von XML Namespaces
Freie Zuordbarkeit von Elementen / Attributen über Markierung mit Namensraumnamen
• keine formale Definitionsgewalt über Namensräume
• Interoperabilität durch Vereinbarung / Werkzeugunterstützung
Implizite, dynamische Struktur eines Namensraums (innerhalb eines Dokuments)
• globale Elemente:
Zuordnung zum Namensraum über Markierung mit Namensraumnamen
• globale Attribute:
Zuordnung zum Namensraum über Markierung mit Namensraumnamen
• lokale Attribute für jedes globale Element im Namensraum: Attribute des Elements ohne Markierung
mit Namensraumnamen

EP (DocEng) | XML Namespaces | Sommer 2020 25


Modelle für XML-Dokumente
XML Information Set und Baumdiagramme
Anne Brüggemann-Klein
TU München
Warum noch andere Modelle?
Bekannt: Modell der strukturierten Dokumente für strukturierte Information
• Unterscheidung logische Struktur und Inhaltstext
• Umsetzung mit Markup, in der Regel mit eingebettetem Markup, möglichst deskriptiv
Modell und Umsetzung sind abstrakt, rein konzeptuell
[nicht operationabel, ohne konkrete Repräsentation]
XML ist eine konkrete Umsetzung des Modells
• spezifische Design-Entscheidungen
- spezielles Konzept von Struktur (Elemente und Attribute)
- Hierarchie ohne Überlappungen
- eingebettetes Markup
• implizite Designentscheidungen, ausgedrückt in Syntaxregeln
Modell für XML-Dokumente
• konzeptuelle, syntax-unabhängige Beschreibung von XML-Dokumenten

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 2


Was bringt ein Modell für XML-Dokumente?
Macht Konzepte klarer
• weg von konkreter Syntax und ihren Mehrdeutigkeiten (syntaktischer Zucker)
- <abc/> vs <abc></abc>vs <abc />
- <abc x=‘1‘ y=‘2‘> vs <abc y=‘2‘ x=“1“>
• hin zu den wesentlichen Komponenten eines XML-Dokuments: Element, Attribut, Text und ihren
Beziehungen à konzeptuelle Sicht auf ein XML-Dokument
Grenzt ab, was als wesentlich betrachtet wird
• legt fest, welche Bestandteile eines XML-Dokuments aus Sicht des Datenmodells wesentlich sind
(filterndes Abbild der Realität)
Ist Grundlage für Definition weiterer Sprachen wie XQuery
Ist Grundlage für Definition von APIs à vgl. Abstrakte Datentypen in der Informatik

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 3


Welche Modelle gibt es?
Hier zwei Modelle für XML-Dokumente à später noch ergänzt um drittes Modell XDM
• (eingeschränktes) XML Information Set à Standard des W3C
à abstrakte Definition
• Baummodell à eigene und äquivalente graphische Definition

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 4


Konzeptuelle Sicht auf XML-Dokument
Was könnte ein Modell für XML-Dokumente abbilden? — Minimalansatz
[was soll in das Modell aufgenommen werden, was nicht?]
• Struktur von Knoten verschiedenen Typs (Elementknoten, Attributknoten, Textknoten)
- Hierarchie (Baumstruktur) von Elementknoten (mit Namen) und Textknoten (mit Textinhalt)
- unterste Ebene: Elementknoten ohne Inhalt oder Textknoten
- einzelnes Einstiegselement
- Attributknoten (mit Namen und Werten) assoziiert zu Elementknoten
• Spezieller Knoten: Wurzelknoten
- (virtueller) Container für ein XML-Dokumen

Ansatz von (eingeschränktem) XML Information Set und Baumdiagrammen


• sehr eng an MicroXML angelehnt (https://dvcs.w3.org/hg/microxml/raw-file/tip/spec/microxml.html)

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 5


Baumdiagramm am Beispiel (Ausschnitt) ...
/

Kontakte

erstelltAm 2017-01-01
geändertAm 2017-10-01

Kontakt
Kontakt

Vorname Nachname born died Web Bio

Maud Powell 1867-08-22 1920-01-08

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

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 7


Systematik Baumdiagramm ...
Hierarchische Struktur von Elementen und Textinhalten à Baumstruktur
Wurzelknoten / Dokumentknoten. à ovaler Knoten, mit / markiert
Element à ovaler Knoten, Name in Knoten, einzelnes Einstiegselement unterhalb des Wurzelknotens
Text à eckiger Knoten, Textinhalt in Knoten, Entitäten wie &amp; und Zeichenreferenzen expandiert
[einfacher als im Skript]
Attribut à Eintrag in Tabelle am Element (zwei Spalten: Name und Wert)
[Reihenfolge der Zeilen unwesentlich, Position der Tabelle links oder rechts vom Knoten, mit oder
ohne Konnektor zum Elementknoten]

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 8


... Systematik Baumdiagramm
Name im anonymen Namensraum: ohne spezielle Markierung
Name in benannten Namensraum: { URI } Name

/ /

kontakte {br.de} kontakte

kontakt kontakt {br.de} kontakt {br.de} kontakt

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 9


Wovon abstrahiert das Baumdiagramm?
Abstraktion von manchen Typen von Komponenten
• XML-Deklaration, Kommentare, Processing Instructions
• Referenzierung von Zeichen (Entitätenreferenzen, Zeichenreferenzen)
• Definition von Namensraumpräfixen
• Deklaration einer Dokumenttypdefinition
Abstraktion von XML-Syntax
• Weglassen einiger Typen von Komponenten: XML-Deklaration <?xml...?> ,
Kommentare <--...--> , DTD <!DOCTYPE...>, Processing Instructions <?stylesheet...?>

• Abstraktion von syntaktischen Varianten (syntaktischer Zucker)


- <abc/> vs <abc></abc>vs <abc />
- <abc x=‘1‘ y=‘2‘> vs <abc y=‘2‘ x=“1“>
• Abstraktion von Kodierungsformat und Referenzierung von Zeichen
• Abstraktion von Zustandekommen von Namen (XML Namespaces)

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 10


XML Information Set
XML Information Set (W3C Recommendation 4. Februar 2004)
https://www.w3.org/TR/xml-infoset/
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
• Information Set (Infoset) entspricht hierarchischer Baumstruktur, die mit XML-Attributen
angereichert oder annotiert ist
• Information Item / Knoten entspricht Komponente im Baum (Knoten in Baumhierarchie oder
Annotationskomponente AKA XML-Attributknoten)
NB: XML Information Set benutzt den Begriff Information Item. Der darauf aufbauende Standard XML
Data Model (XDM) verwendet statt dessen den Begriff Knoten.
“Natürliches" Infoset: wird konstruiert aus wohlgeformtem XML-Dokument nach Parsen
(d.h. z.B. Attribut-Normalisierungen, Whitespace-Normalisierungen haben schon stattgefunden)
“Künstliches" Infoset: wird direkt konstruiert oder entsteht als Ergebnis einer Bearbeitung
(z.B. Transformation)

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 11


Die Information Items / Knoten (Auszug) ...
Document Information Item
• [document element] “Einstiegselement"
Element Information Item
• [namespace name] (gegebenenfalls ““)
• [local name]
• [children] (geordnet)
• [attributes] (ungeordnet)
• [parent]

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 12


... Die Information Items / Knoten (Auszug)
Text Information Item
• [character code]
• [parent]
Attribute Information Item
• [namespace name] (gegebenenfalls ““)
• [local name]
• [attribute type]
• [value]
• [owner element]

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 13


Weitere Information Items (hier nicht betrachtet)
Document Type Declaration Information Item
Processing Instruction Information Item
Comment Information Item
Unexpanded Entity Reference Information Item
Notation Information Item
Unparsed Entity Information Item
Namespace Information Item

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 14


XML Information Set als UML Klassendiagramm
Typen von Information Items, ihre Attribute und Beziehungen

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 15


XML Information Set vs Baumdiagramm
XML Information Set beschreibt, aus welchen Komponenten ein XML-Dokument grundsätzlich besteht
und in welcher Beziehung die Komponenten zueinander stehen
XML Information Set definiert keine Notation für konkrete XML-Dokumente
• man könnte prinzipiell ein Infoset für ein konkretes XML-Dokument als UML-Objektdiagramm
definieren, als Instanz des Klassendiagramms
• ähnliche nicht-normative Ansätze gibt es z.B. im W3C-Standard zu XDM
Alternative: ein Baumdiagramm definiert eine graphische Notation für konkrete XML-Dokumente
• berücksichtigt Komponenten und ihre Beziehungen
• auf Basis des (eingeschränkten) XML Information Set

EP (DocEng) | Modelle für XML-Dokumente | Sommer 2020 16


Einordnung Woche 4
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
Rückblick Wochen 2 und 3
Modell der strukturierten Dokumente
XML zur Kodierung strukturierter Dokumente
Modelle für XML-Dokumente

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 2


Zusammenfassung Wochen 2 und 3 ...
Ausgangsfrage: Was ist ein (strukturiertes) Dokument?
Antwort: abstrakt etwas, das dem Modell der strukturierten Dokumente entspricht (VOR Kodierung)
• Komponente Inhaltstext
• Komponente (logische) Struktur, Markierungen oder Metainformation, die den Inhaltstext annotiert
Konkrete Repräsentation von strukturierten Dokumenten
• mittels Markup allgemein (unterliegende Datenstruktur oder in eingebetteter Form)
• deskriptives Markup (manchmal auch deklaratives Markup genannt): beschreibt Rollen unabhängig
vom Verwendungszweck (term vs fett)
Flexibilität des Modells der strukturierten Dokumente
• graphische Formatierung für Dokumente in unabhängigen Stylesheets definierbar
(nicht in das Dokument kodiert)
• semantische Verarbeitung in unabhängigen Verarbeitungsvorschriften definierbar
(nicht in das Dokument kodiert)

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 3


... Zusammenfassung Wochen 2 und 3 ...
XML mit XML Namespaces zur Kodierung strukturierter Dokumente
[zur konkreten syntaktischen Repräsentation in Textform]
• eingebettetes Markup, mit spezieller Syntax vom eigentlichen Inhaltstext unterschieden
• Strukturierung erfolgt über attributierte Elemente als Hierarchie
- Syntax von Tags
- Begriff der Wohlgeformtheit
• Elemente und Attribute haben Namen
- einfache Strings (bestimmte Zeichen, keine Blanks)
- in Terminologie von XML Namespaces: lokaler (einfacher) Name
- Erweiterung durch XML Namespaces um Namensraum-Namen (URI):
erweiterter Name als Paar aus Namensraum-Namen (URI) und lokalem (einfachem) Namen
• Syntax (XML Namespaces) für die Definition von erweiterten Namen über Namensraum-Definitionen
und die Verwendung von Präfixen in qualifizierten Namen
[<p:abc xmlns:p=“...“>...</p:abc>]
- Aspekte von leeren Präfixen, Default-Namensraum, anonynem Namensraum

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 4


... Zusammenfassung Wochen 2 und 3
Modellierung von XML-Dokumenten als spezifische Umsetzung des Modells
der strukturierten Dokumente
• Präzisierung und Eingrenzung: was ist im Kontext der Vorlesung das Wesentliche an XML auf einer
konzeptuellen Ebene?
- Typen von Informationseinheiten: Wurzelknoten, Elementknoten, Attributknoten und Textknoten
- mit Eigenschaften (Modell-Attributen) und Beziehungen
• Modelle
- W3C XML Information Set (standardisiert, abstrakt)
- Baumdiagramm (nicht standardisiert, graphisch)

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 5


Begriffe Woche 3
Syntax XML Namespaces
Abstraktion Namensraum-Name (Kontext URIs)

Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name

Information Item Namensraum-Definition


(wird auch Präfix-Definition oder Bindung von
Präfix und Namensraum-Name genannt)
Scope oder Gültigkeitsbereich (einer
Namensraum-Definition)
lokales Attribut
globales Attribut

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 6


Lernergebnisse und Kompetenzen Woche 3 ...
Eindeutige Namen in XML-Dokumenten (XML Namespaces)
• Erklären, wozu XML Namespaces dient
• Erklären der Rollen von Namensraumnamen und Präfixen
• Definieren, was qualifizierte Namen und erweiterte Namen sind
• Erklären der Rolle von standardisierten Namensraumnamen wie
http://www.w3.org/1999/XSL/Transform für XSLT
• Elemente und Attribute in XML-Code zu Namensräumen zuordnen, inklusive Zuordnung zu
anonymem / universellem Namensraum und zu Default-Namensräumen
• Die Begriffe lokales und globales Attribut in Bezug auf XML Namespaces erläutern
• Lokale und globale Attribute in XML-Code erkennen

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 7


... Lernergebnisse und Kompetenzen Woche 3
Modellierung von XML-Dokumenten und Fragmenten von XML-Dokumenten (XML Information Set,
Baumdiagramme, XDM)
• Die Datenmodelle XML Information Set und XDM beschreiben
• Aspekte nennen, die in einer XML-Kodierung eines Dokuments vorhanden sind und von denen
Baumdiagramme abstrahieren
• Konkrete XML-Dokumente in Baumdiagramme umwandeln (Achtung, leicht geänderte Notation
gegenüber dem Skript in Bezug auf Textknoten)

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 8


Was erwartet Sie in Woche 4 ?

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 9


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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 10


Feinstruktur Instruktionseinheiten Teil II
Teil II Modellierung und Kodierung strukturierter Dokumente
(Wochen 2–4)
Basics Vertiefung
• [W2] Modellierung von Information • Darstellung strukturierter Dokumente mit
(Modell der strukturierten Dokumente) - HTML5 und CSS
(eingebettetes und deskriptives Markup) - LaTeX
• [W2] Kodierung von Dokumenten mit XML - Word
(Elemente, Attribute, Text) • Darstellung von XML-Dokumenten
mit CSS
• [W3] Eindeutige Namen in XML-Dokumenten
(XML Namespaces) • spezifische XML-Anwendungen
• [W3] Modellieren von XML-Dokumenten - DocBook
(XML Information Set, Baumdiagramme) - SVG
• weitere Modelle
• [W4] Zeichenkodierung (Unicode)
- JSON
- RDF (Triple)

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 11


Zeichenkodierung und XML ...
Dokumente nach dem Modell der strukturierten Dokumente (strukturierte Dokumente)
• häufig (XML, LaTeX, HTML) kodiert mit eingebettetem Markup
• Dokument ist ein Textstrom, der aufgeteilt ist in Inhaltstext und in Markierungen über dem Inhaltstext
(Tags in XML) für die Struktur
• syntaktische Regeln (z.B. zur Verwendung von spitzen Klammern in XML) bestimmen, was
Inhaltstext und was Markup ist
In dieser Einheit im Fokus
• der reine Textstrom, in dem Zeichen zum Inhalt oder zur Struktur gehören können

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 12


... Zeichenkodierung und XML
Ein XML-Dokument ist auf der untersten Ebene definiert als eine Folge von Unicode-Zeichen,
die gewisse syntaktische Regeln befolgen muss
• analog: ein Java-Programm ist auf der untersten Ebene definiert als eine Folge von
Unicode-Zeichen, die gewisse syntaktische Regeln befolgen muss
Fragen
• Was ist ein Unicode-Zeichen?
• Wie werden ein Unicode-Zeichen und eine Folge von Unicode-Zeichen kodiert
(in Bits und Bytes repräsentiert, z.B. zur Speicherung in einer Datei)?
Rolle eines 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

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 13


Begriffe Woche 4
Unicode UTF-8
Zeichen UTF-16

Zeichensatz (Schrift) UCS-2


Universal Character Set (UCS) Basic Multilingual Plane (BMP)
US-ASCII Ebene
ISO-Latin-1 Adresse

Zeichentabelle Code-Raum
Code Point, (Code-) Position Hex-Ziffer
Kodierungsformat Byte

Schrift (Font) X-Bit-Zeichensatz

EP (DocEng) | Einordnung Woche 4 | Sommer 2020 14


Zeichenkodierung mit Unicode

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

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 2


... Zeichenkodierung, Unicode und XML ...
Was ist ein Zeichen in UCS?
• Zeichen wird identifiziert mit Code Point
- z.B. entspricht ÿ dem Code Point 255 oder 0xFF
• Zeichen hat zusätzliche Beschreibung in Unicode (irrelevant für Speicherung)
- z.B. hat Zeichen 255 den namen „y mit Diärese“, ist ein alphabetisches Zeichen aus dem
lateinischen Zeichensatz und hat typische Erscheinungsformen ÿ, ÿ und ÿ
Zeichen in Unicode ist abstrakt
• typographische Erscheinungsform in Schriften (Fonts) kein Bestandteil des Zeichenbegriffs
in Unicode
• Schriften (Fonts) zur Darstellung von Zeichen notwendig
- TrueType-Schriften, Outline- oder Binärformate
- immer zu fragen: welche Unicode-Zeichen kann eine konkrete Schrift (Font) abdecken
[die wenigsten werden komplett sein, Phänomen der hohlen Kästchen in Web-Seiten]

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 3


... Zeichenkodierung, Unicode und XML ...
Reichweite
• Unicode 6.2 deckt 110.182 Zeichen ab
• Zeichensatz UCS wird ständig erweitert
• national standardisierte Zeichensätze
(lateinisch, hebräisch, arabisch, koreanisch, ...)
sind bereits abgedeckt
Impact
• abstrakte Repräsentation von Zeichen als Zahl,
unabhängig von existierenden Kodierungen
und graphischen Repräsentationen
• Universal Character Set (UCS)
erlaubt simultane Verwendung verschiedener
(nationaler) Zeichensätze
in einem einzigen Dokument

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 4


... Zeichenkodierung, Unicode und XML
Fragen
• Was ist ein Unicode-Zeichen, wie sind die Unicode-Zeichen organisiert?
- Zeichenkodierung (diese Einheit)
• Wie werden ein Unicode-Zeichen und eine Folge von Unicode-Zeichen kodiert?
- Kodierungsformat (nächste Einheit)
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

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 5


Organisation des Code-Raums ISO-Latin-1
Organisation eines überschaubaren Zeichensatzes: ISO-Latin-1
• Zeichen angeordnet in zwei-dimensionaler Matrix mit
16×16 oder 256 Feldern
• Hex-Ziffern 0, 1, ..., 9, A, B, ..., F stehen für
Zahlen 0, 1, ..., 15
• jedes Feld angegeben durch zwei Hex-Ziffern,
eine für die Zeile und eine für die Spalte
• Zeichen ä in Zeile E und Spalte 4
• Code Point für ä ist 0xE4 oder 15×16+4 oder 228
Organisationsprinzip der mehr-dimensionalen Matrix übertragbar auf Unicode-Zeichensatz
mit 100.000-fach größerem Code-Raum

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 6


0 0000 8 1000

1 0001 9 1001

Einschub: Hex-Ziffern, Bits und Bytes 2 0010 A 1010

3 0011 B 1011

Hex-Ziffern in Bits 4 0100 C 1100

• 16 Hex-Ziffern 0,...,9,A,...F stehen für Zahlen 0,...,15 5 0101 D 1101

• einzelne Hex-Ziffer in 4 Bit speicherbar (16=24) 6 0110 E 1110

• Paar von Hex-Ziffern (Adresse) in 8 Bit oder einem Byte speicherbar 7 0111 F 1111

ISO-Latin-1 ist 8-Bit Zeichensatz


• Zeichen durch ein Paar von Hex-Ziffern oder ein Byte repräsentiert
• Zeichen ä (Zeile E, Spalte 4) durch Byte 1110 0100 repräsentiert
US-ASCII ist 7-Bit-Zeichensatz
• die ersten 8 Zeilen (obere Hälfte) von ISO-Latin-1
• in Hex-Ziffer für Zeile ist das führende Bit 0; d.h. es genügen 7 Bit
US-ASCII enthält Zeichen aus ISO-Latin-1 ohne Umlaute
und Sonderzeichen

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 7


Organisation des Code-Raums Unicode Ebene 0
Teiltabelle, sogenannte Ebene 0, Basic Multilingual Plane (BMP),
bestehend aus den ersten 216 Zeichen (65.536)
Strukturierung der Ebene in Kacheln, jede Kachel vergleichbar mit ISO-Latin-1
(16×16 Felder pro Kachel, Adresse des Felds ausgedrückt durch 2 Hex-Ziffern)
Arrangement von Kacheln in Matrix mit 16 Zeilen und 16 Spalten,
Adresse der Kachel ausgedrückt durch 2 Hex-Ziffern
http://de.wikipedia.org/wiki/Unicode
Adresse eines Felds in der Ebene 0
ausgedrückt durch 4 Hex-Ziffern, zwei für die
Kachel, zwei für die Position innerhalb der Kachel
Beispiel: Position 2122 bezeichnet
in Kachel 21 (zweite Zeile erste Spalte)
das Feld 22 (zweite Zeile zweite Spalte)
An dieser Position mit Code Point 0x2122
(dezimal 8482) steht das Zeichen ™
Kachel 00 in Unicode ist genau ISO-Latin-1

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 8


Teilbereiche in Ebene 0
In Kachel 00, ISO-Latin-1
• 65 nicht druckbare Zeichen (Kontrollzeichen)
an Positionen 00-1F, 7F, 80-9F
2.048 Surrogatpositionen (D800-DFFF): 8 Kacheln
(später bei Kodierungsformat UTF16 wichtig)
6.400 Positionen für Privates (E000-F8FF): 25 Kacheln
nicht belegbare Positionen FFFE, FFFF http://de.wikipedia.org/wiki/Unicode

49.194 Positionen im Bereich 0-FFFF belegt


7.827 Positionen im Bereich 0-FFFF
noch frei: > 30 Kacheln

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 9


Organisation des Code-Raums Unicode in Ebenen
Code-Raum von Unicode strukturiert in 17 Ebenen (adressiert durch 2 Hex-Ziffern 00 bis 10)
[das ist Ebene 0, die Basic Multilingual Plane (BMP), plus 16 weitere Ebene]
• jede Ebene hat 16×16 Kacheln (adressiert durch 2 Hex-Ziffern)
• jede Kachel hat 16×16 Felder für je ein Zeichen (adressiert durch 2 Hex-Ziffern)
Beispiel
• Position 1D11E* bezeichnet in Ebene 1 in Kachel D1 das Feld 1E
• an Code-Position 0x1D11E (dezimal 119.070) steht „MUSICAL SYMBOL G Clef“

Maximale Code-Position ist 0x10FFFF oder dezimal 1.114.111


[17×256×256-1 oder 17×216-1]

* führende Nullen optional

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 10


Organisation des Code-Raums Unicode in Blöcke
https://unicode-table.com/en/blocks/

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 11


Unicode Zeichenkodierung und XML
Unicode ist DIE Zeichentabelle für XML; d.h.
• XML-Standard definiert XML-Dokument (oder beliebige Entity) auf unterster Ebene als Strom von
Unicode Zeichenpositionen oder Code Points
• einige Zeichen sind Teil von Markup (z.B. Tags oder Entity-Referenzen) , andere sind Teil von
Inhaltstext
• Unicode-Zeichen können über Zeichen-Referenzen spezifiziert werden:
&#169; und &#xA9; spezifizieren das Copyright-Symbol über Code Point
(dezimal oder hexadezimal)
Achtung
• diese Sicht auf XML-Dokumente ist eine Abstraktion gegenüber der Speicherform für XML-
Dokumente (oder Entities)
• Speicherform macht Gebrauch von Unicode Kodierungsformaten, Standard UTF8
- Parser liest Datei in Kodierungsformat und generiert eine Sequenz von Code Points
<?xml version=“1.0“ encoding=“UTF-8“?>

EP (DocEng) | Zeichenkodierung mit Unicode | Sommer 2020 12


Kodierungsformate für Unicode

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

EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 3


Nebenrechnung für UTF16
Positionen P im Bereich 1 0000 bis 10 FFFF
• 16 Ebenen (die von 1 bis 17) mit jeweils Positionen 0000 bis FFFF
• falls wir anfangen, diese Ebenen bei 0 zu zählen, haben wir Positionen 0 0000 bis F FFFF (20 Bit)
• P Position im Bereich 1 0000 bis 10 FFFF à P↓ := P - 1 0000 im Bereich 0 0000 bis F FFFF
Wie kodieren wir diese Positionen, ohne mit der Kodierung der BMP in UCS-2 in Konflikt zu geraten?
Positionen im hohen Surrogatbereich D800 bis DBFF: 110110xx xxxxxxxx (10 Bit frei)
Positionen im niedrigen Surrogatbereich DC00 bis DFFF: 110111xx xxxxxxxx (10 Bit frei)
Aufteilen der oberen / unteren 10 Bit von P↓ auf Position im hohen und niedrigen Surrogatbereich
• Division mit Rest durch Dualzahl 100 0000 0000 (oder Hex-Zahl 400)
• H = (P↓) DIV 400 + D800 und
L = (P↓) MOD 400 + DC00
Kodewort von P nach UTF-16 ist das Paar aus H und L, ein Paar von Doppel-Bytes (beide sind
Surrogatpositionen), die Position über zusammen 20 Suffix-Positionen kodiert

EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 4


… Zeichenpositionen in Bits und Bytes
Kodierungsformat UTF8
kodiert Position im Bereich
• bis FFFF mit 1 bis 3 Bytes (deckt BMP ab)
• bis 10FFFF mit 1 bis 4 Bytes (deckt Unicode ab)
• bis 7FFFFFFF mit 1 bis 6 Bytes (außerhalb von Unicode, nie mit Zeichen belegt)
transparent für Binärzahlen von 0 bis 127: kodiert in einem Byte mit höchstwertigem Bit 0
(US-ASCII-transparent)
übrige Binärzahlen kodiert durch Folgen von Bytes, von denen jedes das höchstwertige
Bit auf 1 gesetzt hat
das erste Byte hat n Bits auf 1 und das n+1-te auf 0 gesetzt, die folgenden n-1 Bytes beginnen mit 10;
die übrigen Positionen für die Kodierung der Binärzahl
Kodewort ist Folge variabler Länge von bis zu vier (sechs) Bytes

EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 5


Schema für UTF8
Einheiten UTF8-Darstellung Bit größte Position
1 0xxxxxxx 7 7F (US-ASCII)

2 110xxxxx 10xxxxxx 11 7FF

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

EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 6


X-Bit-Zeichensatz
Diskussion: Was ist ein X-Bit-Zeichensatz (X = 7, 8, 16, 32 … 21)?
• bezieht sich auf Größe des Zeichensatzes (NICHT auf das Kodierungsformat): 2X Zeichen
• bei kleinen Zeichensätzen oft direkter Bezug zu Kodierungsformat
- ISO-Latin-1 ist ein 8-Bit-Zeichensatz
- nur ein Kodierungsformat: ein Byte pro Zeichen, Dualzahldarstellung
• bei Unicode grundsätzlich kein Bezug à separates Konzept der Kodierungsformate
Der Code-Raum für Unicode hat Positionen von 0 bis 10FFFF
• 220 Zeichen à Positionen 0 bis F FFFF (zu wenig für Unicode)
• 221 Zeichen à Positionen 0 bis 1F FFFF (ausreichend für Unicode)
Also: Unicode ist ein 21-Bit-Zeichensatz

EP (DocEng) | Kodierungsformate für Unicode | Sommer 2020 7


Unicode und XML

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

EP (DocEng) | Unicode und XML | Sommer 2020 2


... XML und Unicode ...
XML Software muss wenigstens Kodierungsformate UTF8 und UTF16 verstehen
[Achtung: gemeint ist wirklich UTF16, nicht UCS-2]
Deklaratation des gewünschten Kodierungsformats kann in einer XML Declaration erfolgen
(ohne Garantie dass der XML-Prozessor sie versteht):

<?XML encoding="«encoding description»" ?>


Die Default-Deklaration ist UTF8

EP (DocEng) | Unicode und XML | Sommer 2020 3


… XML und Unicode
Die folgenden Werte für «encoding description» stehen zur Verfügung:
• UTF-8 UTF-16 ISO-10646-UCS-2 ISO-10646-UCS-4
• ISO-8859-1 bis -9 ISO-2022-JP Shift_JIS EUC_JP
• ebenso alle bei IANA registrierten Werte
Encoding Description impliziert Zeichensatz, Kodetabelle und Kodierungsformat
Darüber hinaus können im Text selbst über Character References Unicode-Zeichen
spezifiziert werden
• &#169; und &#xA9; spezifizieren das Copyright-Symbol unabhängig vom Kodierungsformat

EP (DocEng) | Unicode und XML | Sommer 2020 4


Pragmatische Empfehlung
Datei in 7-Bit-Ascii (ohne Umlaute etc.) ist immer auch in UTF8 (XML-Standard)
Datei in ISO-Latin-1 (ASCII mit Umlauten, Akzenten)
wird von den meisten XML-Prozessoren verstanden
Warnung: Wir reden nur über Kodierung der Zeichen, nicht über die Anzeige

EP (DocEng) | Unicode und XML | Sommer 2020 5


Begriffe, Lernergebnisse, Kompetenzen Teil II
Kodierung und Modellierung strukturierter
Dokumente
Anne Brüggemann-Klein
TU München
Begriffe Woche 1
Strukturierte Dokumente Datenmodell: relational strukturierte Information
Inhalt, Inhaltstext Datenmodell: semistrukturierte, datenorientierte
Information
(Logische) Struktur
Datenmodell: strukturierte, textorientierte
Markup, eingebettetes Markup, Information
deskriptives Markup
XML, XML-Technologie, XStack
Kodierung von strukturierten Dokumenten,
Rolle von XML JSON
Format, formatierte Präsentation, Visualisierung NoSQL und Multi-Modell Datenbanksysteme
Formatvorlage, Stylesheet, CSS
Formatierung und andere Verarbeitungsformen
Semantische Verarbeitung

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 2


Begriffe Woche 2
Modell der strukturierten Dokumente Extensible Markup Language XML
Strukturiertes Dokument text-orientierte und daten-orientierte Information

Inhalt, Inhaltstext Element, Attribut, Text


Logische Struktur Markupsprache,
Metasprache für Markupsprachen
Markup, eingebettetes Markup,
deskriptives Markup Syntax
Kodierung von strukturierten Dokumenten, Tag, Zeichen-Referenz, Entity-Referenz
Rolle von XML
Wohlgeformtheit
Format, formatierte Präsentation
Parser
Formatvorlage, Stylesheet
Datenformat vs. Präsentationsformat
Formatierung und andere Verarbeitungsformen
Semantische Verarbeitung

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 3


Lernergebnisse und praktische Kompetenzen
Modell der strukturierten Dokumente
• Die wesentlichen Komponenten des Modell der strukturierten Dokumente nennen und beschreiben
• Den Begriff des eingebetteten Markups erklären
• Die Begriffe Inhaltstext und eingebettetes Markup in Bezug auf Kodierung strukturierter Dokumente
erklären
• Realisierungsmöglichkeiten von strukturierten Dokumenten erläutern, insbesondere in Bezug auf
eingebettetes Markup (mögliche Beispiele zur Illustration sind XML, HTML, LaTeX, Word)
• Wesentliche Unterschiede zwischen XML und HTML erläutern
• Die Rolle von Stylesheets im Zusammenhang mit dem Modell der strukturierten Dokumente erklären
• Erläutern, wie XML-Dokumente mit Hilfe von CSS im Browser formatiert dargestellt werden

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 4


Lernergebnisse und praktische Kompetenzen
Kodierung von Strukturen mit XML (Elemente, Attribute, Text)
• Darstellen, wozu XML dient
• Bezug von XML zum Modell der strukturierten Dokumente erklären
• Komponenten von XML-Dokumenten nennen und in XML-Code identifizieren
• Kriterien für Wohlgeformtheit nennen
• Aufgaben eines XML-Parsers (XML-Prozessors) benennen
• Unterscheidung zwischen text-orientierten und daten-orientierten Dokumenten erklären und in
konkretem XML-Code erkennen
• Unterscheidung zwischen logischer und physischer Struktur systematisch und an Beispielen
erklären (erst nach Woche 6 erforderlich!)

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 5


Begriffe Woche 3
Syntax XML Namespaces
Abstraktion Namensraum-Name (Kontext URIs)

Datenmodell Präfix
Baumdiagramm Default-Namensraum
Knoten Anonymer (oder universeller) Namensraum
XML Information Set qualifizierter Name, erweiterter Name

Information Item Namensraum-Definition


(wird auch Präfix-Definition oder Bindung von
Präfix und Namensraum-Name genannt)
Scope oder Gültigkeitsbereich (einer
Namensraum-Definition)
lokales Attribut
globales Attribut

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 6


Lernergebnisse und praktische Kompetenzen
Eindeutige Namen in XML-Dokumenten (XML Namespaces)
• Erklären, wozu XML Namespaces dient
• Erklären der Rollen von Namensraumnamen und Präfixen
• Definieren, was qualifizierte Namen und erweiterte Namen sind
• Erklären der Rolle von standardisierten Namensraumnamen wie
http://www.w3.org/1999/XSL/Transform für XSLT
• Elemente und Attribute in XML-Code zu Namensräumen zuordnen, inklusive Zuordnung zu
anonymem / universellem Namensraum und zu Default-Namensräumen
• Die Begriffe lokales und globales Attribut in Bezug auf XML Namespaces erläutern
• Lokale und globale Attribute in XML-Code erkennen

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 7


Lernergebnisse und praktische Kompetenzen
Modellierung von XML-Dokumenten und Fragmenten von XML-Dokumenten
(XML Information Set, Baumdiagramme)
• Das Datenmodell XML Information Set beschreiben
• Aspekte nennen, die in einer XML-Kodierung eines Dokuments vorhanden sind und von denen
Baumdiagramme abstrahieren
• Konkrete XML-Dokumente in Baumdiagramme umwandeln
(Achtung, leicht geänderte Notation gegenüber dem Skript in Bezug auf Textknoten)

Achtung: Erweiterung im Laufe der Vorlesung um Datenmodell XDM (Teil IV)

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 8


Begriffe Woche 4
Unicode UTF-8
Zeichen UTF-16

Zeichensatz (Schrift) UCS-2


Universal Character Set (UCS) Basic Multilingual Plane (BMP)
US-ASCII Ebene
ISO-Latin-1 Adresse

Zeichentabelle Code-Raum
Code Point, (Code-) Position Hex-Ziffer
Kodierungsformat Byte

Schrift (Font) X-Bit-Zeichensatz

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 9


Lernergebnisse und praktische Kompetenzen
Zeichenkodierung für XML-Dokumente und Unicode
• Die Aufgabe von Zeichenkodierungen kennen
• Die Entwicklungsziele von Unicode kennen
• Das Kodierungsmodell mit Zeichensatz, Kodetabelle, Kodierungsformat kennen
• Die Begriffe UCS-Zeichensatz, Unicode-Zeichentabelle und Unicode-Kodierungsformat erläutern
• Die Prinzipien der Kodierungsformate UCS-2, UTF-8 und UTF-16 verstehen
• Zeichenkodierung im Kontext von XML verstehen

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil II | Sommer 2020 10


Einordnung Woche 6a
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 2


Rückblick Teil II
Teil II: Strukturierte Dokumente, ihre Modellierung und Kodierung
• Strukturierte Dokumente
- modelliert als Inhaltstext und logische Struktur (Modell der strukturierten Dokumente)
à Flexibilitätsvorteile
- geeignet für text-orientierte und daten-orientierte Dokumente (semi-strukturierte Daten)
- können verbunden werden mit
- Stylesheets für Präsentation
- mit weiteren Bearbeitungsvorschriften für Filterung, Generierung neuer Dokumente, Abfrage etc à Teil IV
- werden kodiert mit (eingebettetem, deklarativem) Markup
• XML zur Kodierung strukturierter Dokumente
- mit Komponenten Elemente, Attribute, Text, hierarchische Struktur
- Syntax: Tags, freies Vokabular für Elemente und Attribute à Wohlgeformtheit
- modelliert in XML Information Set, visualisiert mit Baumdiagrammen
- genauere Beschreibung von Namen mit XML Namespaces
- kombinierbar mit CSS-Stylesheets für formatierte Präsentation im Browser

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 3


Ausblick auf Teil III
Teil III: Schemasprachen für strukturierte Dokumente
• Was ist Schemasprache für strukturierte Dokumente (ausgeprägt nur für XML) ?
- Möglichkeit, das Vokabular der Strukturelemente für einen Anwendungsbereich zu spezialisieren
Definition einer spezialisierten Markup-Sprache
- allgemeine Syntax wie XML
- spezialisiertes Vokabular (z.B. DocBook, SVG, XHTML, TEI)
- Definition in einem Schema / einer Strukturvorgabe, die in der Schemasprache geschrieben ist
• Welche Schemasprachen für XML-Dokumente gibt es ?
- Document Type Definition (DTD), Teil von XML
- XML Schema
- Relax NG
- Schematron

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 4


Feinstruktur Instruktionseinheiten Teil III
Teil III Schemasprachen für strukturierte Dokumente
(Wochen 6–7)
Basics Vertiefung
• [W6a] Aufgaben von Schemasprachen • Schemasprachen und Namensräume
• [W6a] XML Document Type Definition (DTD) • OO-Modellierung und XML Schema
(logische und physische Struktur)
• Weitere Schemasprachen: Schematron und
• [W6b] XML Schema Datentypen Relax NG
• [W7] XML Schema Strukturtypen • Identity Constraints in Schemasprachen
• [W7] Entwurfsmuster für Schemasprachen

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 5


Woche 6a: Document Type Definition (DTD)
Erste und einfachste Schemasprache
Teil von XML
Zwei Funktionsbereiche einer DTD
• Definition von zulässigen logischen Strukturen durch Deklarationen
von Elementen und Attributen (wie alle Schemata)
• Definition und Komposition von physischen Komponenten durch
Definition und Referenzierung von Entitäten (Alleinstellungsmerkmal von DTDs)

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 6


Begriffe Woche 6a
Schemasprache Wertebereich / Typ
Schema / Strukturvorgabe Identity Constraints (Typen ID und IDREF)

Instanz Logische Struktur, physische Struktur


XML-Anwendung Entity-Definition
Metasprache für Markup-Sprachen Entity-Referenz
XML Document Type Definition (DTD)
XML Schema, Schematron, Relax NG
Deklaration von Element / Attribut
Inhaltsmodell
Element Content, Mixed Content

EP (DocEng) | Einordnung Woche 6a | Sommer 2020 7


Schemasprachen

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)

Schemasprache Schema / Instanz


(DTD) def Strukturvorgabe def
(XML-Dok)
(konkrete DTD)

EP (DocEng) | Schemasprachen | Sommer 2020 2


... Schemasprache und Schema / Strukturvorgabe
Wozu braucht man Schemata / Strukturvorgaben ?
• Kommunikation: Eingrenzen der Freiheit des Vokabulars in einer Community / in einer Domäne,
Herstellen einer Verständnisbasis (z.B. DocBook, XHTML, SVG, ...)
• Entwicklung spezieller Werkzeuge
Beispiel: DocBook, Transformationen nach HTML und PDF
• Überprüfung / Validierung von Vereinbarungen
• syntaxgestützte Eingabeunterstützung
• prinzipiell: Kenntnis der möglichen Strukturen kann Verarbeitung erleichtern
(Suchen, Filtern, Query-Optimierung)

EP (DocEng) | Schemasprachen | Sommer 2020 3


Vorgaben (Regeln) vs Instanzen
Kontext XML: verschiedene Sprachen für Vorgaben (Regeln)
(Instanzen einer Vorgabe sind XML-Dokumente)
• XML Document Type Definition (DTD)
• XML Schema
• Relax NG
• Schematron
Andere Kontexte
• über kontextfreie Grammatik definierte Syntax einer
Programmiersprache versus Programm
• relationales Schema versus Tabellen
• Klassendefinition in Java versus Objekte

EP (DocEng) | Schemasprachen | Sommer 2020 4


XML Document Type Definition (DTD)
Logische Struktur
Anne Brüggemann-Klein
TU München
XML Document Type Definition (DTD)
Bestandteil von XML
XML DTD am Beispiel eines Glossars
• schemaBeispieleGlossarDTD im Ordner „Materialien“
Vokabular für Elementnamen und Attributnamen, Beziehungen von Elementen und Attributen
einschließlich Identity Constraints werden formal festgelegt mit Hilfe von
• Elementdeklarationen (Inhaltsmodellen)
• Attributdeklarationen
Online-Validierung mit https://www.xmlvalidation.com/
[Achtung, Umlaute in Namen können Probleme machen]

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 2


Konzepte DTD: Elementdeklarationen ...
Deklaration von Element mit Namen und Inhaltsmodell (Content Model) regelt,
welche Sequenzen von Knoten ein Element mit diesem Namen als Inhalt haben kann
Normalfall für Inhaltsmodell: Element Content à Element enthält nur Unter-Elemente (keinen Text)
Beschreibung von Element Content über Namen der Unter-Elemente und über Operatoren,
die erlaubte Sequenzen beschreiben
Sprachmittel sind ...
- Sequenz ,
- Alternative |
- Wiederholung (mindestens einmal) +
- Wiederholung (auch null-mal) *
... und Klammern ( und )

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 3


... Konzepte DTD: Elementdeklarationen ...
Beispiel Deklaration von x als Element Content: <!ELEMENT x ( a, ( b | c )+, a ) >
• erlaubt, dass Element x folgendermaßen aussehen kann:
<x><a/><b/><a/></x> oder <x><a/><c/><a/></x> oder <x><a/><c/><b/><a/></x>
• erstes und letztes Element ist a, in der Mitte stehen beliebig viele Elemente b und c
• hier ist angenommen, dass a, b und c leer sein dürfen
• das wird in weiteren Elementdeklarationen für diese Elemente geregelt (siehe nächste Folie),
z.B. in der Form
- <!ELEMENT a EMPTY>
- <!ELEMENT b (#PCDATA)*>
- <!ELEMENT c a*>
Durch Operatoren + und * beliebig breite Instanzen definierbar

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 4


... Konzepte DTD: Elementdeklarationen
Weitere Inhaltsmodelle
• Empty Content mit Schlüsselwort EMPTY
- <!ELEMENT a EMPTY> à für Element a ist kein Inhalt erlaubt
• Mixed Content in der Form (#PCDATA | el1 | el2 | ...)*
- <!ELEMENT a (#PCDATA | b | c)*> à für Element a ist Textinhalt mit beliebig vielen eingestreuten
Unter-Elementen b und c erlaubt
• Text Content in der Form (#PCDATA) oder (#PCDATA)
- <!ELEMENT a (#PCDATA)*> à für Element a nur Textinhalt ohne Unter-Elemente

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 5


Zusammenspiel Element-Deklarationen
Einzelne Elementdeklaration definiert
• welche Unterelemente ein Element haben kann
• in welchen Reihenfolgen, mit welchen Häufigkeiten diese Unterelemente jeweils vorkommen können
• ob das Element Text enthalten darf
Einzelne Elementdeklaration betrifft nur die Ebene direkt unterhalb von dem Element
Für die Unterelemente gibt es dann eigene Deklarationen,
die jeweils für deren Unterelemente zuständig sind
à Gesamtheit der Deklarationen ergibt die DTD

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 6


Zusammenspiel Element-Deklarationen: Rekursion
Beispiel Glossar (nur Elementdeklarationen)
<!ELEMENT glossar (titel,eintrag+)>
<!ELEMENT titel (#PCDATA)*>
<!ELEMENT eintrag (term,definition,eintrag*)>
<!ELEMENT term (#PCDATA)*>
<!ELEMENT definition (#PCDATA|refEintrag)*>
<!ELEMENT refEintrag (#PCDATA)*>
Rekursive Definition ist möglich
• Element x kann direkt oder indirekt wieder Element x enthalten (Beispiel eintrag)
<!ELEMENT x (y?)>
<!ELEMENT y (x)>
hat z.B. Instanz
<x><y>
<x> <y><x/></y> </x>
</y></x>
• dadurch beliebig tiefe Instanzen einer DTD definierbar (beliebige Breite durch Operatoren + und *)
EP (DocEng) | DTD (logische Struktur) | Sommer 2020 7
Instantiierbarkeit
Beispiel einer Elementdeklaration, die keine Instanzen haben kann
<!ELEMENT a (b)>
<!ELEMENT b (a)>
• Element a soll Element b enthalten soll Elemant a enthalten soll Element b enthalten ...
• keine Abbruchbedingung für Rekursion

Achtung: Dieser ausgegraute Text ist Unisinn (siehe Video) – Eine korrekte Beschreibung von
Instantiierbarkeit erfordert noch genaueres Nachdenken.

Ein Element in einer DTD ist instantiierbar*


• wenn die Deklaration des Elements einen leeren Inhalt zulässt oder
• wenn jedes laut Elementdeklaration mögliche Unterelement instantiierbar ist
... rekursive Definition, die abbrechen muss

* Vergleiche ähnliche Definitionen in der Theorie der formalen Sprachen für kontext-freie Grammatiken

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 8


Konzepte DTD: Attributdeklarationen
Deklaration von Attribut mit Element- und Attributnamen und ...
• Wertebereich / Typ CDATA, ID, IDREF, Aufzählungstyp (w1 | w2 | ...)
- Identity Constraints
- Werte vom Typ ID müssen im Dokument eindeutig sein (unabhängig vom Attributnamen)
- Werte vom Typ IDREF müssen im Dokument als Werte vom Typ ID vorkommen
(keine „dangling references“)

• Default-Wert (optional) Wert in Anführungszeichen, optional mit #FIXED


• Default-Regelung #REQUIRED (verpflichtend), #IMPLIED (optional)

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 9


XML-Syntax: DTD …
Deklaration der DTD im Dokument:
Internes und externes Subset
<!DOCTYPE Name SYSTEM "URI">
<!DOCTYPE Name [Deklarationen]>
<!DOCTYPE Name SYSTEM "URI" [Deklarationen]>
Auch: öffentlicher Name für DTD, aufgelöst durch systemabhängigen Katalog
<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 10


… XML-Syntax: DTD …
Deklaration für Element:
<!ELEMENT Name ContentModel>

Content Model: Element Content


EMPTY, ANY
Ausdruck über Elementnamen mit Klammern/Operatoren ,|?+*
vgl. reguläre Ausdrücke, Suchausdrücke
Content Model: Mixed Content
Ausdruck (#PCDATA),
Ausdruck (#PCDATA | N1 | ... | Nx)*

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 11


… XML-Syntax: DTD
Deklaration für Attributliste
<!ATTLIST Name N1 W1 D1 … Nx Wx Dx>
(Elementname, Attributname, Wertebereich, Defaultregel)
Wertebereiche
CDATA, ID, IDREF, (v1, … ,vn), ENTITY
Defaultregelungen
#REQUIRED, #IMPLIED, v, #FIXED v
Einsatz von Defaultwerten durch Parser
Kommentar (nicht schachtelungsfähig), auch in Instanz
<!--KommentartextOhne'--'-->

Prozessor-Anweisung, auch in Instanz


<?Name¹”XML” AnweisungOhne'?>'?>

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 12


Wohlgeformtheit und Validität
XML-Dokumente müssen wohlgeformt sein
(Überprüfung durch alle Parser, auch nicht-validierende)
• DTD optional
• nur ein Wurzelelement
• korrekte Klammerung
• keine mehrfachen Attribute in Elementen
Zusätzlich: Validität gegenüber einem Schema / einer DTD
(Überprüfung durch validierende Parser)
• Instanz erfüllt Deklarationen von Elementen und Attributen (Typen, Defaults)
• validierender Parser setzt Defaultwerte ein und erkennt / validiert Attributtypen
wie ID, IDREF
• Entitäten-Referenzen definiert. à weiterer Teil

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 13


Diskussion XML DTD
XML DTD (XML-Anwendung) definiert Menge von konformen Dokumenten (Instanzen)
• Beispiele: Glossar, XHTML
Für jedes Element wird ein Typ festgelegt
• welche Unterelemente in welchen Reihenfolgen und Vielfachheiten
• möglicher Textinhalt
• welche Attribute mit welchen möglichen Werten
XML DTD macht XML zu Metasprache für Markup-Sprachen
Aufbau von XML DTD als Katalog
(Pattern Salami-Slice à Alternativen Woche 7)
• kontextfreie Definition von Regeln (Zugriff über Namen)
Wahl der "richtigen" oder passenden Strukturelemente Teil des Requirements Engineering
für Dokumentenanwendungen, eventuell später im Kontext von XML Schema

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 14


XML Document Type Definition (DTD)
Logische Struktur
Anne Brüggemann-Klein
TU München
XML Document Type Definition (DTD)
Bestandteil von XML
XML DTD am Beispiel eines Glossars
• schemaBeispieleGlossarDTD im Ordner „Materialien“
Vokabular für Elementnamen und Attributnamen, Beziehungen von Elementen und Attributen
einschließlich Identity Constraints werden formal festgelegt mit Hilfe von
• Elementdeklarationen (Inhaltsmodellen)
• Attributdeklarationen
Online-Validierung mit https://www.xmlvalidation.com/
[Achtung, Umlaute in Namen können Probleme machen]

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 2


Konzepte DTD: Elementdeklarationen ...
Deklaration von Element mit Namen und Inhaltsmodell (Content Model) regelt,
welche Sequenzen von Knoten ein Element mit diesem Namen als Inhalt haben kann
Normalfall für Inhaltsmodell: Element Content à Element enthält nur Unter-Elemente (keinen Text)
Beschreibung von Element Content über Namen der Unter-Elemente und über Operatoren,
die erlaubte Sequenzen beschreiben
Sprachmittel sind ...
- Sequenz ,
- Alternative |
- Wiederholung (mindestens einmal) +
- Wiederholung (auch null-mal) *
... und Klammern ( und )

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 3


... Konzepte DTD: Elementdeklarationen ...
Beispiel Deklaration von x als Element Content: <!ELEMENT x ( a, ( b | c )+, a ) >
• erlaubt, dass Element x folgendermaßen aussehen kann:
<x><a/><b/><a/></x> oder <x><a/><c/><a/></x> oder <x><a/><c/><b/><a/></x>
• erstes und letztes Element ist a, in der Mitte stehen beliebig viele Elemente b und c
• hier ist angenommen, dass a, b und c leer sein dürfen
(das wird in weiteren Elementdeklarationen für diese Elemente geregelt)

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 4


... Konzepte DTD: Elementdeklarationen ...
Weitere Inhaltsmodelle
• Empty Content mit Schlüsselwort EMPTY
- <!ELEMENT a EMPTY> à für Element a ist kein Inhalt erlaubt
• Mixed Content in der Form (#PCDATA | el1 | el2 | ...)*
- <!ELEMENT a (#PCDATA | b | c)*> à für Element a ist Textinhalt mit beliebig vielen eingestreuten
Unter-Elementen b und c erlaubt
• Text Content in der Form (#PCDATA) oder (#PCDATA)
- <!ELEMENT a (#PCDATA)*> à für Element a nur Textinhalt ohne Unter-Elemente

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 5


Konzepte DTD: Attributdeklarationen
Deklaration von Attribut mit Element- und Attributnamen und ...
• Wertebereich / Typ CDATA, ID, IDREF, Aufzählungstyp (w1 | w2 | ...)
- Identity Constraints
- Werte vom Typ ID müssen im Dokument eindeutig sein (unabhängig vom Attributnamen)
- Werte vom Typ IDREF müssen im Dokument als Werte vom Typ ID vorkommen
(keine „dangling references“)

• Default-Wert (optional) Wert in Anführungszeichen, optional mit #FIXED


• Default-Regelung #REQUIRED (verpflichtend), #IMPLIED (optional)

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 6


XML-Syntax: DTD …
Deklaration der DTD im Dokument:
Internes und externes Subset
<!DOCTYPE Name SYSTEM "URI">
<!DOCTYPE Name [Deklarationen]>
<!DOCTYPE Name SYSTEM "URI" [Deklarationen]>
Auch: öffentlicher Name für DTD, aufgelöst durch systemabhängigen Katalog
<!DOCTYPE math
PUBLIC "-//W3C//DTD MathML 2.0//EN"
"http://www.w3.org/Math/DTD/mathml2/mathml2.dtd">

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 7


… XML-Syntax: DTD …
Deklaration für Element:
<!ELEMENT Name ContentModel>

Content Model: Element Content


EMPTY, ANY
Ausdruck über Elementnamen mit Klammern/Operatoren ,|?+*
vgl. reguläre Ausdrücke, Suchausdrücke
Content Model: Mixed Content
Ausdruck (#PCDATA),
Ausdruck (#PCDATA | N1 | ... | Nx)*

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 8


… XML-Syntax: DTD
Deklaration für Attributliste
<!ATTLIST Name N1 W1 D1 … Nx Wx Dx>
(Elementname, Attributname, Wertebereich, Defaultregel)
Wertebereiche
CDATA, ID, IDREF, (v1, … ,vn), ENTITY
Defaultregelungen
#REQUIRED, #IMPLIED, v, #FIXED v
Einsatz von Defaultwerten durch Parser
Kommentar (nicht schachtelungsfähig), auch in Instanz
<!--KommentartextOhne'--'-->

Prozessor-Anweisung, auch in Instanz


<?Name¹”XML” AnweisungOhne'?>'?>

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 9


Diskussion XML DTD
XML DTD (XML-Anwendung) definiert Menge von konformen Dokumenten (Instanzen)
• Beispiele: Glossar, XHTML
XML DTD macht XML zu Metasprache für Markup-Sprachen
Aufbau von XML DTD als Katalog
(Pattern Salami-Slice à Alternativen Woche 7)
• kontextfreie Definition von Regeln (Zugriff über Namen)
Wahl der "richtigen" oder passenden Strukturelemente Teil des Requirements Engineering
für Dokumentenanwendungen, eventuell später im Kontext von XML Schema

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 10


Wohlgeformtheit und Validität
XML-Dokumente müssen wohlgeformt sein
(Überprüfung durch alle Parser, auch nicht-validierende)
• DTD optional
• nur ein Wurzelelement
• korrekte Klammerung
• keine mehrfachen Attribute in Elementen
Zusätzlich: Validität gegenüber einem Schema / einer DTD
(Überprüfung durch validierende Parser)
• Instanz erfüllt Deklarationen von Elementen und Attributen (Typen, Defaults)
• validierender Parser setzt Defaultwerte ein und erkennt / validiert Attributtypen
wie ID, IDREF
• Entitäten-Referenzen definiert. à weiterer Teil

EP (DocEng) | DTD (logische Struktur) | Sommer 2020 11


XML Document Type Definition (DTD)
Physische Struktur
Anne Brüggemann-Klein
TU München
XML-Konzept: Entities …
Doppelfunktion DTDs
Strukturvorgabe à Element- und Attributdeklarationen
• Festlegung eines Vokabulars von Element- und Attributnamen und ihren Verwendungsweisen
• Regeln für Aufbau der logischen Struktur von XML-Dokumenten mit Elementen, Attributen und Text
• Verbindlichkeit und Überprüfbarkeit
Im Vorfeld der Strukturbeschreibung und entsprechender Validierung:
Modularisierung eines XML-Dokuments in Komponenten [NUR IN DTD]
• Definition der physischen Komponenten oder
Speichereinheiten in DTD à Entity-Definitionen
• Zusammensetzen der Komponenten in der physischen Struktur
eines XML-Dokuments à Entity-Referenzen
• Expansion der Referenzen zur logischen Struktur eines XML-Dokuments

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 2


… XML-Konzept: Entities
XML-Dokumente sind physisch in Entities organisiert (Entity als Speichereinheit)
Gesamtes Dokument bildet eine Entity
• inkludiert untergeordnete Entities durch Entity-Referenzen
• Beispiele für Entity-Referenzen: &auml; %HTMLlat1;
Entities müssen in der DTD definiert werden
• der Name wird an seinen Ersetzungstext gebunden
Expansion: Auflösen von Entity-Referenzen
Anders als bei HTML in XML nur sehr wenige vordefinierte Entities (für Funktionssymbole):
&amp; &lt; &gt; &quot; &apos;
• dafür Möglichkeit, eigene Entities zu definieren
Entities als Makro-Mechanismus

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 3


Arten von Entities
Ersetzungstext einer Entity kann
• intern (innerhalb der Definition der Entity) oder à für kurze Ersetzungstexte
<!ENTTITY yuml “&#xFF;“>
• extern definiert werden à für lange Ersetzungstexte
<!ENTITY % HTMLspecial SYSTEM "xhtml-special.ent">
Bei einer externen Definition wird eine Ressource (beispielsweise ein Dateiname) angegeben,
die den Ersetzungstext enthält (Speicherort für Speichereinheit)
Orthogonal zwei Typen von Entities
• General Entity: Expansion in Instanz – Referenzierung mit &name;
• Parameter Entity: Expansion in DTD – Definition mit %, Referenzierung mit %name;
Vorteil
• Getrennte Namensräume
• Verbergen des Namensraums für DTD-interne Entitäten (Transparenz)

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 4


Fallstudie XHTML
W3C Recommentdation für XHTML
• https://www.w3.org/TR/xhtml1/
enthält DTD
• https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd mit Teilbereich
https://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 5


XML-Syntax: Entities …
Generelle Entities: in DTD definiert, in Instanz verwendet
Beispiele für Definition interner genereller Entity
<!ENTITY AHK 'Alles für Hund und Katze'>
<!ENTITY AHK 'Alles für Hund &amp; Katze'>
Beispiele für Definition externer genereller Entity
<!ENTITY AHK SYSTEM 'ahk.ent'>
<!ENTITY AHK PUBLIC '-//TSV//Firma AHK//DE' 'ahk.ent'>

Verwendung in Dokumenteninstanz (Text und Attributwerte)


&AHK;
Anwendung: Import von eigenen Abkürzungen

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 6


… XML-Syntax: Entities
Parameter-Entities: in DTD definiert, in DTD verwendet
Beispiele für Definition interner Parameter-Entity
<!ENTITY % text ´(#PCDATA | emph)*´>
Beispiele für Definition externer Parameter-Entity
<!ENTITY % text SYSTEM 'text.dtd'>
<!ENTITY % text
PUBLIC ´-//Springer//Text DTD//DE´
'text.dtd'>

Verwendung in DTD
<!ELEMENT para %text;>
<!ELEMENT quote %text;>
Anwendung: internes Management DTD, z.B. XHTML, Umgang mit Namespaces

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 7


Einsatzzweck von Entities ...
Modularisierung
• Aufteilen großer Dokumente; z.B. Buch in Kapitel
• abgestufter Gültigkeitsbereich (DTDs): was gilt intern, was firmenweit, was global?
• explizite Benennung, z.B. von Typen – Entity Script als Abkürzung für CDATA in XHTML DTD
• Redundanzvermeidung – Entity inline als wiederverwendbare Abkürzung für Inline-Elemente

Anpassbarkeit
• Überschreiben von Definitionen in DTDs
- angewendet in DokBook: DTD von OASIS für technische Dokumentation

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 8


... Einsatzzweck von Entities
Wiederverwendbarkeit
• Abkürzungen (Sonderzeichen, Textbausteine)
• Teildokumente (Logos, DTDs)

Plattformunabhängigkeit
• Kapselung des Speicherorts für Ersetzungstext an Definitionsort

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 9


XML-Parser (erweiterte Sicht)
Programme zur XML-Syntaxüberprüfung heißen Parser oder XML-Prozessoren
Aufgaben eines Parsers
• Syntaxüberprüfung
• Abstraktion von "syntaktischem Zucker"
• Überprüfen der Wohlgeformtheit
• Auswertung von DTD (optional)
- Expansion von Referenzen
- Einsetzen von Default-Attributwerten
- Validierung
• Weitergabe der erforderlichen Information an Anwendung
(SAX-API: Strom von Events)
(DOM-API: Aufbau einer Baumstruktur)
(XML Information Set: konzeptionell)

EP (DocEng) | DTD (physische Struktur) | Sommer 2020 10


Einordnung Woche 6b
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 2


Feinstruktur Instruktionseinheiten Teil III
Teil III Schemasprachen für strukturierte Dokumente
(Wochen 6–7)
Basics Vertiefung
• [W6a] Aufgaben von Schemasprachen • Schemasprachen und Namensräume
• [W6a] XML Document Type Definition (DTD) • OO-Modellierung und XML Schema
(logische und physische Struktur)
• Weitere Schemasprachen: Schematron und
• [W6b] XML Schema Datentypen Relax NG
• [W7] XML Schema Strukturtypen • Identity Constraints in Schemasprachen
• [W7] Entwurfsmuster für Schemasprachen

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 3


Woche 6a: Begriffe
Begriffe
• Schemasprache (DTD, XML Schema)
• Schema (eine konkrete DTD, ein XSD-Dokument, das in der Schemasprache geschrieben ist)
• Instanz (ein XML-Dokument, das den Vorgaben eines Schemas gehorcht)

Schema / Instanz
Schemasprache def
Strukturvorgabe def
(XML-Dokument,
(z.B. DTD) (konkrete DTD, z.B. konkretes
z.B. für Glossare) Glossar)

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 4


Woche 6a: Document Type Definition (DTD)
DTD: erste und einfachste Schemasprache
• Teil von XML
• Zwei Funktionsbereiche einer DTD
- Definition von zulässigen logischen Strukturen durch Deklarationen
von Elementen und Attributen (wie in allen Schemasprachen vorgesehen)
- Definition und Komposition von physischen Komponenten durch
Definition und Referenzierung von Entitäten (Alleinstellungsmerkmal von DTD)

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 5


Weitere Schemasprache: XML Schema (XSD)
Vom W3C standardisierte Schemasprache
• W3C Recommendation Version 1.1 vom 5. April 2012
• https://www.w3.org/standards/xml/schema
Mächtigere Alternative zu XML DTD
• Strukturierungsmöglichkeiten
• Datentypen
• Abbildbarkeit von Modellierungen (Vererbungskonzepte)
Alternative zu XML Schema: Relax NG
• weniger "barocke" Strukturierungsmöglichkeiten
Gut ergänzbar durch Schematron, besonders für Identity Constraints
(Schlüssel / Fremdschlüssel)

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 6


Woche 6b: XML Schema Datentypen
Unterscheidung von Datentypen und Strukturtypen
• Datentypen verwendbar für Attributwerte (und reine Textinhalte von Elementen)
• vergleichbar mit skalaren Datentypen in Programmiersprachen oder Attributtypen in relationalen
Datenbanksystemen
Vordefinierte Datentypen in XML Schema
• Beispiele (aus über 50 vordefinierten Datentypen): xs:string, xs:date, xs:integer, xs:id, xs:idref
• wesentlich reichhaltiger als Datentypen in XML DTD (CDATA, ID, IDREF)
Möglichkeit, in XML Schema eigene Datentypen zu definieren
• Alleinstellungsmerkmal von XML Schema (keine andere Schemasprache sieht das vor)
Ausblick auf Woche 7: XML Schema Strukturtypen
• Element- und Attributdeklarationen (Verallgemeinerung von DTD)
• Typdefinitionen (neu gegenüber DTD)

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 7


Begriffe Woche 6b
Typ, Strukturtyp, Datentyp
Vordefinierter Datentyp
Restriction
Facette
Pattern
Listenbildung
Vereinigung

EP (DocEng) | Einordnung Woche 6b | Sommer 2020 8


Datentypen vs Strukturtypen

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

Werte eines Datentyps


• skalare Werte, als Zeichenketten mit gewissen Bildungsgesetzen / Formaten kodiert

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

EP (DocEng) | Datentypen vs Strukturtypen | Sommer 2020 2


... Datentyp vs Strukturtyp ...
Werte eines Strukturtyps
• Sequenzen von Unterelementen (bestimmten Typs), evtl. durchmischt mit Text
oder reiner Inhaltstext (bestimmten Datentyps)
• kombiniert mit Attributen (bestimmten Datentyps)
• Spezialfall: kein Inhalt, nur Attribute (wie Record, Zeile in Tabelle)

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

EP (DocEng) | Datentypen vs Strukturtypen | Sommer 2020 4


Anwendbarkeit von Datentypen und Strukturtypen
Datentyp auf Attribute und auf Elemente anwendbar
• Attributdeklaration ordnet dem Attributnamen einen Datentyp zu
• Elementdeklaration kann einem Element einen Datentyp zuordnen
- Element hat dann reinen Textinhalt von diesem Typ und keine Attribute
• Elementdeklaration kann dem reinen Textinhalt einen Datentyp zuordnen und außerdem Attribute
deklarieren
- Element hat dann reinen Textinhalt von deisem Typ und weitere Attribute
Strukturtyp nur auf Elemente anwendbar
• Elementdeklaration kann dem deklarierten Element einen Strukturtyp zuweisen
Eine Definition für einen Strukturtypen kann Datentypen verwenden
• für die Attributwerte
• eventuell für reinen Textinhalt der Elemente, die mit dem Strukturtypen definiert werden

EP (DocEng) | Datentypen vs Strukturtypen | Sommer 2020 5


Datentypen in XML DTD und in XML Schema
Datentypen in XML DTD
• PCDATA, CDATA, ID, IDREF, selbstdefinierte Aufzählungstypen
• einige wenige mehr
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 dieser Woche 6b)
• Möglichkeit, in XML Schema eigene Datentypen zu definieren

EP (DocEng) | Datentypen vs Strukturtypen | Sommer 2020 6


Datentypen in XML Schema

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

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 2


Selbstdefinierte Datentypen in XML Schema
Nutzerdefinierte Datentypen mit drei Konstuktoren aus schon definierten Datentypen (Basistypen)
• Restriktion (Einschränkung des Wertebereichs)
- Ableitung aus Basis-Typ
- entlang von typspezifischen Facetten
- "nützlichste" Facette: Pattern
• Listenbildung
- Werte sind durch Blanks separierte Listen von Werten aus Basistyp
• Vereinigung
- Werte kommen aus einem von mehreren Basistypen
Beispiele
• schemaBeispielePeanutsDatentypen: library.xml, libraryDataTypes.xsd
XML-Schema-Prozessor (Validierer)
• https://www.freeformatter.com/xml-validator-xsd.html

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 3


Konstruktor Restriktion …
Definition neuer einfachen Typen durch Restriktion eines Basistyps über Werte für Facetten
[Form von Ableitung, Vererbung]
Definition des Basistyps über Attribut base oder lokale Typdefinition, eingebettet in xs:restriction
Muster mit Facetten
<xs:simpleType name="…">
<xs:restriction base="…">
<xs:pattern value="…"/>
<xs:maxExclusive value="…"/>
<xs:enumeration value="…"/>
<xs:enumeration value="…"/>
</>
</>

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 4


… Konstruktor Restriktion …
Beispiel: referenzierter Basistyp
<xs:simpleType name="myInteger">
<xs:restriction base="xs:integer">
<xs:maxExclusive value="5"/>
<xs:minInclusive value="-2"/>
</>
</>

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 5


… Konstruktor Restriktion …
Beispiel: eingebetteter Basistyp
<xs:simpleType name="myInteger">
<xs:restriction>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxExclusive value="5"/>
</>
</>
<xs:minInclusive value="-2"/>
</>
</>

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 6


… Konstruktor Restriktion: Facetten …
Welche Facetten gibt es (Anwendbarkeit abhängig von Datentyp)
• xs:enumeration
• xs:length xs:maxLength xs:minLength
• xs:pattern
• xs:whitespace value="preserve|replace|collapse"
• xs:maxInclusive xs:maxExclusive
xs:minInclusive xs:minExclusive
• xs:totalDigits xs:fractionDigits

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 7


… Konstruktor Restriktion: Facetten …
Die Facette xs:pattern
(operiert im Lexical Space: Kodierung als String, nach Expansion von Entitäten)
Wert der Facette ist Muster (regulärer Ausdruck) über Unicode-Zeichen
Beispiel
<xs:simpleType name="SKU">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}-[A-Z]{2}"/>
</xs:restriction>
</xs:simpleType>

Muster beschreibt Zeichenketten (match) (Zeichenkette passt zu Muster)


Werte des Datentyps SKU: 121-XY, 333-AZ
Ähnliche Muster in Perl, emacs, vi

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 8


… Konstruktor Restriktion: Pattern-Facette …
Funktionssymbole: . \ ? * + { } ( ) [ ]
Atomare Muster …
beschreiben Zeichenketten der Länge 1
• Zeichen, die keine Funktionssymbole sind
• spezielle Zeichen mit vorangestelltem \:
\n \r \t \\ \| \. \^ \? \* \+ \{ \} \( \) \[ \]
• Wildcard-Zeichen .
• Zeichenklassen
\s (Spaces) \d (Digits) \w (Word Characters)
\i (XML 1.0 Initial Name Characters)
\c (XML 1.0 Name Characters)
und ihre Komplemente \S \D \W \I \C

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 9


… Konstruktor Restriktion: Pattern-Facette …
… Atomare Muster
• Unicode Character Classes, z.B.:
\p{Cc} für Kontrollzeichen
\P{Cc} für Nicht-Kontrollzeichen
• Unicode Character Blocks, z.B.:
\p{isArabic} für arabische Zeichen
\P{isArabic} für nicht-arabische Zeichen
• Nutzer-definierte Zeichenklassen
[a-z] [^a-z] [-^\\] [\-\^\\]
[-+] [+-] [\^] [\d\p{cC}]
[\p{isBasicLatin}-[\P{L}]]

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 10


… Konstruktor Restriktion: Pattern-Facette
Quantifizierer, nach Atomen und Gruppen
* + ? {n} {n,m} {n,}
Vereinigungsoperator |
Sequenzoperator (ohne Zeichen)
Gruppenbildung mit Klammern () (schachtelbar)
Beispiel (w steht für Word Character, in Typ xs:token ist Whitespace „normalisiert“)
<xs:simpleType name="story100-200words">
<xs:restriction base="xs:token">
<xs:pattern value="\W*(\w+\W+){99,199}\w+\W*"/>
</>
</>

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 11


Konstruktor Liste
Konstruktor für Listentyp
<xs:simpleType name="myIntegerList">
<!-- <xs:list itemType="…"/> -->
<xs:list>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:maxInclusive value="100"/>
</>
</></>
</>

In Instanzen Listeneinträge durch Leerzeichen getrennt (innerhalb von Listeneinträgen verboten!)


Facetten für Listentypen
xs:length xs:maxLength xs:minLength
xs:enumeration xs:whiteSpace

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 12


Konstuktor Vereinigung
Konstruktor für Vereinigungstyp
<xs:simpleType name="integerOrDate">
<xs:union memberTypes="xs:date xs:integer">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="undefined"/>
</>
</>
</>
</>
(Typen in memberTypes durch Leerzeichen getrennt!)
In Instanzen Typzuweisung an ersten Typ in der Liste, auf den Datum in der Instanz passt
Facetten für Union-Typen
xs:pattern xs:enumeration

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 13


Diskussion XML Schema Datentypen
Definitionsmöglichkeiten für eigene Datentypen beschränkt auf
• Constraints zu vorgegebenen Typen mittels Facetten
• Operatoren Liste und Vereinigung
d.h. eingeschränkte Definitionsmöglichkeiten für eigene Wertebereiche (Semantik)

Konstruktiver wäre eine Typ-Beschreibungssprache


• für die gültigen Lexeme eines Typs
• für die Wertgleichheit zweier Lexeme

Einige Gesichtspunkte dazu (manchmal polemisch) in


• Amy Lewis: Not my Type: Sizing up W3C XML Schema Primitives
[https://www.xml.com/pub/a/2002/07/31/wxstypes.html]

EP (DocEng) | Datentypen in XML Schema | Sommer 2020 14


Einordnung Woche 7
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 2


Feinstruktur Instruktionseinheiten Teil III
Teil III Schemasprachen für strukturierte Dokumente
(Wochen 6–7)
Basics Vertiefung
• [W6a] Aufgaben von Schemasprachen • Schemasprachen und Namensräume
• [W6a] XML Document Type Definition (DTD) • OO-Modellierung und XML Schema
(logische und physische Struktur)
• Weitere Schemasprachen: Schematron und
• [W6b] XML Schema Datentypen Relax NG
• [W7] XML Schema Strukturtypen • Identity Constraints in Schemasprachen
• [W7] Entwurfsmuster für Schemasprachen

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 3


Rückblick Woche 6
Begriffe
• Schemasprache (DTD, XML Schema)
• Schema (eine konkrete DTD, ein XSD-Dokument, das in der Schemasprache geschrieben ist)
• Instanz (ein XML-Dokument, das den Vorgaben eines Schemas gehorcht)
Schema /
Schemasprache Strukturvorgabe Instanz
(konkretes XSD (XML-Dokument,
(z.B. DTD, XML def def
z.B. konkretes
Schema) Schema, z.B. für Glossar)
Glossare)

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)

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 4


Wochen 6b und 7: XML Schema (XSD)
Vom W3C standardisierte Schemasprache
• W3C Recommendation Version 1.1 vom 5. April 2012
• https://www.w3.org/standards/xml/schema
Mächtigere Alternative zu XML DTD à Woche 6a
• Datentypen à Woche 6b
• Strukturierungsmöglichkeiten à Woche 7
• Abbildbarkeit von Modellierungen (Vererbungskonzepte) à nicht behandelt
Alternative zu XML Schema: Relax NG à nicht behandelt
• weniger "barocke" Strukturierungsmöglichkeiten
Gut ergänzbar durch Schematron, besonders für Identity Constraints à nicht behandelt
(Schlüssel / Fremdschlüssel)

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 5


Woche 7: XML Schema Strukturtypen
Unterscheidung von Datentypen und Strukturtypen
Datentypen verwendbar für Attributwerte (und reine Textinhalte von Elementen) à Woche 6b
• Beispiele (aus über 50 vordefinierten Datentypen):
xs:string, xs:date, xs:integer, xs:id, xs:idref
• Möglichkeit, in XML Schema eigene Datentypen zu definieren
Strukturtypen à Woche 7
• Element- und Attributdeklarationen (Verallgemeinerung von DTD)
• Typdefinitionen (neu gegenüber DTD)

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 6


Agenda Woche 7
Begriffe Typ, Strukturtyp, Datentyp (mit Rückgriff auf Woche 6b)
Konzeptuelle Einbettung von XML DTD in XML Schema
Lokale Elementdeklarationen und das Substitutionsprinzip
Globale Typdefinitionen
Die vier Entwurfsmuster
Deskriptivität und Umwandlung à Vertiefung in Review-Wcohe 8

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 7


Begriffe Woche 7
Schemasprache XML Document Type Definition (DTD)
Schema / Strukturvorgabe XML Schema

Instanz Schematron
Typ Relax NG
Strukturtyp Russian Doll
Datentyp Venetian Blind

lokale und globale Deklaration von Element Salami Slice


lokale und globale Definition eines Typs Garden of Eden
Element Content Substitutionsprinzip

Mixed Content Mächtigkeit von Schemasprachen


Inhaltsmodell

EP (DocEng) | Einordnung Woche 7 | Sommer 2020 8


Typen, Datentypen und Strukturtypen
Wiederholung und Erweiterung von Woche 6b
Anne Brüggemann-Klein
TU München
Typ
Allgemein
• Typ entspricht Menge von Werten (z.B. Typ der ganzen Zahlen)
• Zu Typ gehören (Beispiel ganze Zahlen)
- Definition der zugehörigen Werte à verschiedene Möglichkeiten
- Repräsentation der zugehörigen Werte à Vorzeichen, Folge von Ziffern
- Gleichheitsregeln: wann sind zwei Repräsentationen vom Wert her gleich
à führende Nullen: 7 = 007
- Methoden irrelevant in Schemasprachen à Addition, Größenvergleich
XML Schemasprachen kennen zwei Arten von Typen: Datentypen und Strukturtypen
In einem Schema werden Typen zu Namen zugeordnet (Deklaration)
Beispiel: beide Zeilen zusammen definieren implizit einen Strukturtyp und weisen ihn in der
Kombination von Element- und Attribut-Deklaration dem Element zu
<!ELEMENT buch (vorwort, kapitel*, lit)>
<!ATTLIST buch version CDATA #required>

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 2


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

Werte eines Datentyps


• skalare Werte, als Zeichenketten mit gewissen Bildungsgesetzen / Formaten kodiert

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

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 3


... Datentyp vs Strukturtyp ...
Werte eines Strukturtyps
• Sequenzen von Unterelementen (bestimmten Typs), evtl. durchmischt mit Text
oder reiner Inhaltstext (bestimmten Datentyps)
• kombiniert mit Attributen (bestimmten Datentyps)
• Spezialfall: kein Inhalt, nur Attribute (wie Record, Zeile in Tabelle)

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

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 5


Anwendbarkeit von Datentypen und Strukturtypen
Datentyp auf Attribute und auf Elemente anwendbar
• Attributdeklaration ordnet dem Attributnamen einen Datentyp zu
• Elementdeklaration kann einem Element einen Datentyp zuordnen
- Element hat dann reinen Textinhalt von diesem Typ und keine Attribute
• Elementdeklaration kann dem reinen Textinhalt einen Datentyp zuordnen und außerdem Attribute
deklarieren
- Element hat dann reinen Textinhalt von deisem Typ und weitere Attribute
Strukturtyp nur auf Elemente anwendbar
• Elementdeklaration kann dem deklarierten Element einen Strukturtyp zuweisen
Eine Definition für einen Strukturtypen kann Datentypen verwenden
• für die Attributwerte
• eventuell für reinen Textinhalt der Elemente, die mit dem Strukturtypen definiert werden

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 6


Typen in XML DTD …
Strukturtypen implizit durch Kombination von Element- und Attribut-Deklaration (anonym, nicht
referenzierbar)
• Element-Deklaration:
Festlegen von Inhaltsmodell für alle Elemente eines Namens/Typs: Welche Elementtypen
kommen in welcher Reihenfolge in der Ebene unterhalb des deklarierten Elementtyps vor? Auch
Text?
• Attribut-Deklaration:
Festlegen der Attribute pro Elementtyp mit Attributnamen, Wertebereich (Typ) und
Defaultverhalten
Datentypen (vordefiniert, nicht erweiterbar)
• Datentypen für Textinhalte von Elementen: #PCDATA
• Datentypen für Attribute: CDATA, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN,
NMTOKENS, NAME, NAMES, NUMBER, NUMBERS, nutzerdefinierte Aufzählungstyp

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 7


… Typen in XML DTD
Ø Strukturtypen implizit definiert
Ø Nur eine Typdefinition pro Elementname
Identität von Elementname und Elementtyp
Ø Deklarationen nur unabhängig vom Kontext möglich, anders ausgedrückt gilt Substitutionsprinzip für
Dokumente, die zu einer gemeinsamen DTD gehören
Ø Scheibchenweise Definition von Typen: Salami Slice
Ø für jedes Element wird eine "Scheibe" deklariert, die Attribute und mögliche Muster von
Unterelementen definiert
Ø jedes Unterelement ist dann wieder in einer eigenen "Scheibe" deklariert

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 8


Datentypen in XML Schema
Vielfalt von vordefinierten Datentypen (ca 50)
(https://www.oreilly.com/library/view/xml-schema/0596002521/ch04.html)
• xs:string
• xs:date
• xs:integer, xs:float
• xs:ID, xs:IDREF
• ...
Definierbarkeit von eigenen (custom) Datentypen
Deklarierbarkeit von Datentypen für Textinhalte von Elementen (siehe auch
schemaBeispielePeanutsDatentypen)
• in XML Schema kann auch zu dem Textinhalt eines Elements deklariert werden, dass es einem
beliebigen Datentyp angehört
• in DTD gibt es für Textinhalte nur den einen allgemeinen String-Datentyp PCDATA

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 9


Diese Woche:
Strukturtypen mit XML Schema

EP (DocEng) | Typen, Datentypen, Strukturtypen | Sommer 2020 10


Konzeptuelle Einbettung von XML DTD
in XML Schema
Anne Brüggemann-Klein
TU München
Beispiel Gedichte
XML DTD ist Spezialfall von XML Schema (jedenfalls konzeptuell)
• konkrete DTD (logische Struktur) vollständig und äquivalent in ein XSD-Schema transformierbar
Instanz in schemaBeispieleGedichte: gedichtRilke.xml
DTD in schemaBeispieleGedichte: gedicht.dtd
• katalogartige Struktur: „globale“ Elementdeklarationen mit „eingebetteten“ „lokalen“ Typdefinitionen
(oder Bezug auf vordefinierte Datentypen)
XML Schema in schemaBeispieleGedichte: gedicht.xsd, gedicht.annotiert.xsd
• in oXygen automatisch aus DTD generiert
• bildet katalogartige Struktur von DTD ab: „globale“ Elementdeklarationen mit „eingebetteten“
„lokalen“ Typdefinitionen (oder Bezug auf vordefinierte Datentypen)
• genaue Umsetzung von DTD, nur andere Syntax

EP (DocEng) | Einbettung von DTD in XML Schema | Sommer 2020 2


Aufbau des Schemas
Kollektion von (globalen) Elementdeklarationen
• pro Elementdeklaration Name und (lokale) Typdefinition für das Element
(bzw. Referenz auf vordefinierten Datentyp)
• Typdefinition beinhaltet
- Inhaltsmodell / Content Model: Strukturierung in Unterelemente mit regulären Sprachmitteln und
für die Unterelemente jeweils Referenzierung von globalen Elementdeklarationen über
Elementnamen
- äquivalent zu Inhaltsmodellen in DTD, nur mit anderer Syntax
- Attributdeklarationen
- Erweiterung zu Attributdeklarationen in DTD, z. B. in Bezug auf Datentypen

Salami Slice Pattern, Katalogstruktur


• global definierte, referenzierbare, wiederverwendbare Elementdeklarationen
• eine (anonyme) Typdefinition (d.h. ein nicht wiederverwendbarer Typ) pro Elementname
Entspricht Aufbauprinzip von DTDs

EP (DocEng) | Einbettung von DTD in XML Schema | Sommer 2020 3


Definition von Inhaltsmodellen am Beispiel
schemaBeispieleInhaltsmodelle
• sample.xsd, aus DTD sample.dtd generiert
• sampleAnnotated.xsd mit wichtigen Erläuterungen
Inhaltsmodell (...) in Elementdeklaration in DTD ist 1:1 in Inhaltsmodell
(Element xs:complexType) in XML Schema übertragbar
• Element xs:complexType in XML Schema als Teil einer Element-Deklaration und auch selbständig
als Typdefinition verwendbar à siehe weitere Blöcke
• innerhalb von xs:complexType muss immer ein Operator-Element xs:sequence, xs:choice oder xs:all
stehen; ein xs:element kann NICHT direkt unterhalb von xs:complexType vorkommen
[das trägt (u.a.) XML Schema den Vorwurf der Geschwätzigkeit (verbosity) ein]

EP (DocEng) | Einbettung von DTD in XML Schema | Sommer 2020 4


Mächtigkeit von Inhaltsmodellen in DTD vs XSD
XML Schema hat mächtigere Definitionsmöglichkeiten für Text Content als DTD
• durch Verwendung beliebiger Datentypen
XML Schema hat mächtigere Definitionsmöglichkeiten für Mixed Content als DTD
• durch Verwendung anderer äußerer Operatoren als xs:choice UND durch Verwendung
zusammengesetzter Inhaltsmodelle
Für Element Content ist die Mächtigkeit bei XML Schema und bei DTD identisch
• Wiederholungs-Attribute minOccurs und maxOccurs erlauben lediglich kompaktere Beschreibungen
als die Wiederholungs-Operatoren Plus, Stern, Fragezeichen
• zusätzlicher Operator xs:all, der sogenannte Shuffle-Operator, kann auch mit regulären
Sprachmitteln Sequenz und Choice ausgedrückt werden, allerdings ist auch hier XML Schema
kompakter

EP (DocEng) | Einbettung von DTD in XML Schema | Sommer 2020 5


Definition von Inhaltsmodellen systematisch

aber nicht mächtiger als Inhaltsmodelle in DTDs.


Inhaltsmodelle in XML Schema sind kompakter,
Definition von Inhaltsmodellen in XML DTD und XML Schema mit äquivalenten
regulären Sprachmitteln, aber unterschiedlicher Syntax
Operator DTD XML Schema
Sequenz , <sequence>
Alternative | <choice>
Wiederholung optional ? minOccurs = 0, maxOccurs = 1
Wiederholung beliebig * minOccurs = 0, maxOccurs = unbounded
Wiederholung mind. 1 + minOccurs = 1, maxOccurs = unbounded
Teilausdrücke () syntaktisch unnötig, aber es gibt <group>

Frage: ist die Kombination von beliebigen Werten für minOccurs und maxOccurs
nicht mächtiger als ?, *, +
Antwort: NEIN (siehe Annotationen in samplesAnnotated.xsd

EP (DocEng) | Einbettung von DTD in XML Schema | Sommer 2020 6


Lokale Elementdeklarationen und das
Substitutionsprinzip
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

Potentiell unbeschränkte Kette auf Instanzebene, aber endliche Beschreibung in Schema


• Beispiel HTML: beliebig tief geschachtelte Inline-Elemente wie <em>, <b>, <i> erlaubt
• Beispiel MathML: beliebig tief geschachtelte mathematische Teilausdrücke erlaubt
Ø bei endlicher Definition / Strukturvorgabe für Instanzen unbeschränkter Tiefe
Form von Referenzierung / Rekursion nötig

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 2


Lokale vs globale Festlegungen
Jede Festlegung (Element-Deklaration oder Typ-Definition) kann sein
• lokal bzgl. übergeordneter Ebene, eingebettet oder gekapselt in übergeordneter Ebene,
in anderen Festlegungen nicht nutzbar
- z.B. Typdefinition mit Inhaltsmodell und Attributdeklarationen in DTD immer lokal,
konzeptuell eingebettet in Elementdeklaration für ein spezielles Element
- <!ELEMENT gedicht (autor, titel)>
<!ATTLIST gedicht year CDATA #IMPLIED>
• global auf äußerster Ebene des Schemas, dann in der Ebene, die das Konstrukt nutzt, über Namen
referenziert
- z.B. Elementdeklaration in DTD immer global, über global verfügbare Namen in mehreren
Inhaltsmodellen referenzierbar und so wiederverwendbar
- <!ELEMENT gedicht (autor, titel, strophe*)>
<!ELEMENT roman (autor, titel, kapitel*)>
<!ELEMENT autor (#PCDATA)*>
<!ELEMENT titel (#PCDATA)*>

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 3


Definition Salami Slice
Auseinanderschneiden des Streifenmusters in Salami Slice Pattern
• Schnitte in Einheiten Element-D — Typ-D
• Element-D É Typ-D Ê Element-D É Typ-D Ê Element-D É Typ-D …
É beinhaltet lokal
Ê referenziert global
• globale Elementdeklarationen, lokale Typdefinitionen
• Referenzierung vo Element-Deklaration
- in DTD: implizit <!ELEMENT a (b)>
b in Inhaltsmodell erscheint als Name, ist aber Referenz
- in XML Schema: explizit <xs:complexType><...><xs:element ref=“b“/></...></...>
b in Inhaltsmodell ist explizit als Referenz markiert

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 4


Eigenschaften Salami Slice
DTDs sind immer nach Salami Slice Pattern aufgebaut, Pattern auch in XML Schema umsetzbar
• schemaBeispieleGedichte: gedicht.dtd, gedicht.annotiert.xsd
(identisch mit gedicht.SS.annotiert.xsd)
Durch Referenzierung möglich
• beliebig tiefe Instanzen
• Rekursion auf Instanz-Ebene: beliebige Wiederholung von Elementen gleichen Namens in der Tiefe
• <!ELEMENT a (b)>
<!ELEMENT b (a?)>
• Instanzen sind vertikale „Ketten“ von Elementen a und b (abwechselnd), die mit b enden.
<a> <b/> </a>
<a> <b> <a> <b/> </a> </b> </a>
...

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 5


Definition Russian Doll
Auseinanderschneiden des Streifenmusters in Russian Doll Pattern
• ein einziges globales Element zum Einstieg
• alle Elementdeklarationen haben lokale Typdefinitionen
(Ausnahme: Referenzen auf vordefinierte Datentypen)
• eine Typdefinition bezieht sich auf lokale Elementdeklarationen
• Element-D É Typ-D É Element-D É Typ-D É Element-D É Typ-D …
É beinhaltet lokal
Ê referenziert global
In XML Schema (aber nicht in DTD) umsetzbar
• schemaBeispieleGedichte: gedicht.RD.annotiert.xsd

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 6


Beschränkung des Patterns Russian Doll
Für ein Russian Doll Schema (also ein Schema, das nach Russian Doll strukturiert ist) entspricht die
Struktur aller Instanzen genau der Struktur des Schemas:
• die Schachtelungstiefe der Instanz beschränkt durch das Schema
• Rekursionen (Wiederholungen von Elementen in der Tiefe) nur beschränkt möglich
Beschränkung durch Notwendigkeit des endlichen Aufschriebs für ein Schema
• Element-D É Typ-D É Element-D É Typ-D É Element-D É Typ-D …
É beinhaltet lokal
Ê referenziert global
• Beendigung des Aufschriebs auf unterster Ebene durch Referenzierung von vordefinierten
Datentypen für Element-Inhalt oder leeres Inhaltsmodell

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 7


Stärke von lokalen Elementdeklarationen
Lokale Elementdeklarationen entkoppeln
Namen von Element und Typ
• einem Element a kann in einem Kontext
(in einer lokalen Deklaration) ein Typ U
zugewiesen werden und in einem
anderen Kontext (in einer anderen
lokalen Deklaration ein Typ V)
• Schema mit einziger Instanz
<abc> <x> <abc/> </x> </abc>
erfordert lokale Elementdeklarationen
- das äußerste Element abc darf nur
einen einzigen Kindknoten x zulassen
- das innerste Element abc darf nur den
leeren Inhalt zulassen
• machbar mit XML Schema

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 8


Schwäche von globalen Elementdeklarationen
Globale Elementdeklarationen koppeln Namen von Elementen und Typ
• einem Element a kann nur ein einziger Typ zugewiesen werden
Ein Schema erfüllt das Substitutionsprinzip wenn folgendes gilt: Sei doc1 eine Instanz des Schemas
mit Wurzelelement abc und sei doc2 eine andere Instanz des Schemas, in dessen Inneren ein
Element abc vorkommt. Dann ist auch das Dokument doc3, in dem im Inneren von doc2 das
Teildokument mit Wurzelelement abc durch doc1 ersetzt wird, eine Instanz des Schemas
Ein Schema mit ausschließlich globalen Elementdeklarationen erfüllt das Substitutionsprinzip
Das Substitutionsprinzip zu erfüllen ist eine Schwäche eines Schemas: das Schema kann seine
Instanzen nicht genau genug eingrenzen sondern muss „Folge-Schemata“ zulassen
Es gibt kein Schema mit ausschließlich globalen Elementdeklarationen, das genau das eine
Dokument <abc> <x> <abc/> </x> </abc> akzeptiert (insbesondere gibt es keine DTD, die das tut,
wohl aber ein XSD Schema)
• doc1: <abc> <x> <abc/> </x> </abc>
doc2 = doc1, mit innerem leeren Element abc
doc3 = <abc> <x> <abc> <x> <abc/> </x> </abc> </x> </abc>

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 9


Vergleich Salami Slice und Russian Doll
Unvergleichbar in der Beschreibungsmächtigkeit
G oder F ?
• unbeschränkte Rekursion (Schachtelung von Elementen in der Tiefe)
(G Russian Doll, F Salami Slice)
• lokale Elementdeklaration
(F Russian Doll, G Salami Slice)
Vergleiche Dokumentenklassen, die durch Russian Doll oder Salami Slice beschreibbar sind
• Die Menge dieser Dokumentenklassen sind verschieden
Welche der folgenden Klassen ist nur durch Russian Doll oder nur durch Salami Slice beschreibbar ?
• { <a><a/></a> } <!-- nur eine einzige Instanz -->
• { <a/>, <a><a/></a>, <a><a><a/></a></a>, ... } <!-- beliebig lange Ketten
als Instanzen -->

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 10


Mächtigkeit durch lokale Elementdeklaration
DTD: nur globale Elementdeklaration möglich
Ø Substitutionseigenschaft
XML Schema: auch lokale Elementdeklaration möglich
Ø reichhaltigere Strukturbeschreibungen, größere Mächtigkeit
Durch lokale Elementdeklaration Entkopplung von Elementnamen und Elementtyp
Lokale Elementdeklaration innerhalb von Typdefinition: Verhältnis 1:n / Elementname:Typ
(in DTDs nicht nachbildbar)
Durch lokale Elementdeklarationen XML Schema mächtiger als DTDs

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 11


Globale Typdefinitionen

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

Bisher: Typdefinitionen lokal, nicht wiederverwendbar


Anderer Schnitt des Streifenmusters, neu in XML Schema: globale, über Referenzierung
wiederverwendbare Typdefinition
• Deklaration von Elementen mit Referenz auf benannte Typen
• analog zu Referenzen auf vordefinierte Datentypen bereits bekannt

EP (DocEng) | Lokale Elementdeklarationen | Sommer 2020 2


Patterns mit globaler Typ-Definition
Venetian Blind (anderer Scheibenschnitt als Salami Slice):
• Element-D Ê Typ-D É Element-D Ê Typ-D É Element-D Ê Typ-D …
É beinhaltet lokal
Ê referenziert global
• globale Typdefinitionen, lokale Elementdeklarationen (mit Ausnahme eines globalen
Einstiegselements)
• schemaBeispieleGedichte: gedicht.VB.annotiert.xsd
Garden of Eden (fragmentiert, jede Komponenten steht für sich):
• Element-D Ê Typ-D Ê Element-D Ê Typ-D Ê Element-D Ê Typ-D …
É beinhaltet lokal
Ê referenziert global
• globale Typdefinitionen, globale Elementdeklarationen
• schemaBeispieleGedichte: gedicht.GE.annotiert.xsd

EP (DocEng) | Entwurfsmuster für Strukturtypen | Sommer 2020 3


Bewertung globaler Typdefinitionen
Typen als Bürger eigenen Rechts in XML Schema (egal ob lokal oder global definiert)
Durch globale Typdefinition Vermeiden von Redundanzen
Globale Typen sind Normalfall: lokale Typdefinitionen können immer global gemacht werden
• lokal definierte Typen sind anonym
• führe für lokal definierten Typen einen neuen Namen ein
• bewege den so benannten Typen auf die oberste Ebene des Schemas und ersetze in der den Typen
umgebenden Elementdeklaration den lokal definierten Typen durch eine Referenz auf den neuen
globalen Typen
• Achtung: bei diesem Schritt werden keine neuen lokal definierten Typen eingeführt; d.h. ihre Anzahl
vermindert sich um 1
• also: nach endlich vielen Schritten sind die lokalen Typdefinitionen alle global

EP (DocEng) | Entwurfsmuster für Strukturtypen | Sommer 2020 4


Die vier Entwurfsmuster

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

EP (DocEng) | Die vier Entwurfsmuster | Sommer 2020 2


Die vier Entwurfsmuster

Elementdeklaration

Typdefinition lokal global

lokal Russian Doll Salami Slice

global Venetian Blind Garden of Eden

EP (DocEng) | Die vier Entwurfsmuster | Sommer 2020 3


Eigenschaften der Entwurfsmuster

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

EP (DocEng) | Die vier Entwurfsmuster | Sommer 2020 4


Umwandlungsmöglichkeiten

um Transformationsmöglichkeiten auszuschließen
Russian Doll Salami Slice

Achtung: genaues Hingucken erforderlich,


Venetian Blind Garden of Eden

Nur die eingezeichneten Umwandlungen sind möglich.

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.

EP (DocEng) | Entwurfsmuster in Schemasprachen | Sommer 2020 5


Entwurfsmuster in Schemasprachen:
Mächtigkeit und Umformungen
Anne Brüggemann-Klein
TU München
Entwurfsmuster in Schemasprachen ...
Elementdeklaration verbindet Namen und Typ des Elements (mögliche Inhalte und Attribute)
[Element-D — Typ-D]
Verschiedene Formen, die Verbindung syntaktisch auszudrücken
• <xs:element name=“abc“ type=“ ≪ Referenz auf global definierten Typ ≫ “/>
• <xs:element name=“abc“> ≪ lokale (eingebettete) Definition des Typs ≫ </xs:element>
• <!ELEMENT abc ≪ lokale (eingebettete) Definition des Inhaltsmodells ≫ >
<!ATTLIST abc ≪ lokale (eingebettete) Deklarationen der Attribute≫ >
Elementdeklaration in XML Schema kann global (auf äußerster Ebene eines Schemas) vorkommen
oder lokal (innerhalb einer Typdefinition)
Elementdeklaration in DTD kann nur global vorkommen
Eine Elementdeklaration in XML Schema kann einen global definierten Typ (Datentyp oder
Strukturtyp) über seinen Namen referenzieren (über das Attribut type) [Element-D Ê TypD]
Eine Elementdeklaration in XML Schema und in XML DTD kann einen lokal definierten Typ (Datentyp
oder Strukturtyp) in sich beinhalten [Element-D É TypD]
EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 2
... Entwurfsmuster in Schemasprachen ...
Typdefinition: mögliche Werte des Typs (Wertebereich)
• Definition eines Datentyps:
<xs:simpleType name=“abcType“> Name nur bei globaler Typdefinition
<xs:restriction/> | <xs:list/> | <xs:union/>
</xs:simpleType>
• Definition eines Strukturtyps:
<xs:complexType name=“abcType“> Name nur bei globaler Typdefinition
<xs:sequence/> | <xs:choice/> | <xs:group/>
</xs:complexType>

In DTD in zwei Teilen:


als Inhaltsmodell in Elementdeklaration, mit Konstruktoren , | + * und Klammern ()
als Name-Wertebereich-Paare in einer Attributdeklaration

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 3


... Entwurfsmuster in Schemasprachen ...
Typdefinition kombiniert Deklarationen von Elementen in Inhaltsmodellen
(und enthält Attributdeklarationen) [Typ-D — Element-D]
Typdefinition in XML Schema kann global (auf äußerster Ebene eines Schemas) vorkommen oder
lokal (innerhalb einer Elementdeklaration)
• bei globaler Typdefinition ist Typname zwingend, bei lokaler Typdefinition ist Typname verboten
Typdefinition in DTD kann nur lokal vorkommen
Eine Typdefinition in XML Schema kann eine globale Elementdeklaration über ihren Namen
referenzieren [Typ-D Ê Element-D] (in der Form <xs:element ref=“abc“/>)
oder eine lokale Elementdeklaration enthalten [Typ-D É Element-D]
(in der oben angegebenen Form <xs:element name=“abc“ ...>...</xs:element>) )
Eine Typdefinition in DTD referenziert immer globale Elementdeklaration (über den Namen des
Element im Inhaltsmodell) [Typ-D Ê Element-D]
• Kontext <!ELEMENT abc (x | y)>
• In der Typdefinition (x | y) sind x und y Referenzen auf globale Elementdeklaration für x und y

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 4


... Entwurfsmuster in Schemasprachen ...
Salami Slice Pattern *: ElementD É TypD Ê ElementD É TypD Ê ElementD É TypD …
Russian Doll Pattern * ☨: ElementD É TypD É ElementD É TypD É ElementD É TypD …
Venetian Blind Pattern ☨: ElementD Ê TypD É ElementD Ê TypD É ElementD Ê TypD …
Garden of Eden: ElementD Ê TypD Ê ElementD Ê TypD Ê ElementD Ê TypD …
Legende É beinhaltet lokal Ê referenziert global

Elementdeklaration

Typdefinition lokal ☨ global

lokal * Russian Doll Salami Slice (DTD)

global Venetian Blind Garden of Eden

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 5


... Entwurfsmuster in Schemasprachen
* Selbst wenn das Pattern lokale Typdefinitionen verlangt, sind als Ausnahme immer Referenzen auf
vordefinierte Typen erlaubt (das sind dann Datentypen, da es keine vordefinierten Strukturtypen
gibt)
☨ Selbst wenn das Pattern lokale Elementdeklarationen verlangt, sind als Ausnahme immer global
deklarierte Einstiegselemente erlaubt (die werden dann nicht referenziert, da ansonsten die
Elementdeklarationen ja alle lokal sind)

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 6


Kontext für Entwurfsmuster
Datenmodellierung in Web-Anwendungen
• Übersetzung von UML-Klassendiagrammen nach XML Schema
• Berücksichtigung von Vererbung, abstrakten Klassen, Identity Constraints
(erfordern weitere Features von XML Schema)
• Ziel-Entwurfsmuster ist Venetian Blind (mit Modifikationen)
Ausführliche Erläuterung in Fallstudie CalendarX (früheres Praktikumsprojekt)
• Dokumentation
- Schema-Beschreibung unter Fallstudien in Moodle
• Publikation Balisage 2012
- https://www.balisage.net/Proceedings/vol8/html/Bruggemann-Klein01/BalisageVol8-Bruggemann-
Klein01.html
- NB: Modellierung mit ASMs in dieser Publikation wurde nicht weiterverfolgt

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 7


Umwandlungen ...
Fragestellung für Entwurfsmuster A und B: Kann man jedes Schema, das nach A aufgebaut ist, in ein
Schema, das nach B aufgebaut ist, äquivalent umwandeln, d.h. ohne dass sich die Menge der
Instanzen ändert (A ⇒ B) ?
Falls A ⇒ B gilt, ist B allgemeiner oder mächtiger als A. 3×4 Umwandlungen zu betrachten
Lokale Typdefinitionen können immer global gemacht werden
• Gib lokaler Typdefinition einen neuen, eindeutigen Namen und schreibe sie auf die oberste Ebene.
Ersetze lokale Defintion des Typs durch Referenz auf den Namen. Dadurch entstehen keine neuen
lokalen Typdefinitionen, d.h. Prozess bricht ab, nachdem alle Typdefinitionen global gemacht worden
sind.
‼ Also: SS ⇒ GoE, RD ⇒ VB

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 8


Zwischenstand

Russian Doll Salami Slice

Venetian Blind Garden of Eden

Umwandlungen durch Ersetzen von lokalen Typdefinitionen mit globalen Typdefinitionen


(2 Umwandlungen, von oben nach unten, grün)

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 9


... Umwandlungen ...
Nur bei RD ist die Schachtelungstiefe der Instanzen durch das Schema beschränkt. Für jedes andere
Entwurfsmuster kann man ein Schema definieren, das beliebig tief geschachtelte Instanzen hat.
‼ Also: SS ⇏ RD, VB ⇏ RD, GoE ⇏ RD

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 10


Zwischenstand

Russian Doll Salami Slice

Venetian Blind Garden of Eden

Umwandlungen durch Ersetzen von lokalen Typdefinitionen mit globalen Typdefinitionen


(2 Umwandlungen, von oben nach unten, grün)
Keine Umwandlungen mit Ziel Russian Doll (3 Umwandlungen, nach links oben, grau gestrichelt)

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 11


... Umwandlungen ...
Lokale Elementdeklarationen können i.a. nicht global gemacht werden
• Formaler Grund – Argumentation für Typdefinitionen ist nicht übertragbar:
Auch ein lokal deklariertes Element hat einen Namen (anders als ein lokal deklarierter Typ). Der
Name erscheint in den Instanzen, kann also nicht geändert werden. Die Namen global deklarierter
Elemente müssen eindeutig sein. Lokal deklarierten Elementen können dagegen gleich benannt
sein. Mehrere lokal deklarierte Elemente gleichen Namens können also nicht gleichzeitig global
gemacht werden.
• Inhaltlicher Grund – es kann auch keine andere Konstruktion geben:
In RD und damit auch in VB kann ein Schema definiert werden, das nur das Dokument <a><a/></a>
als Instanz hat. Ein Schema mit globalen Elementdeklarationen, das dieses Dokument als Instanz
hat, hat zwingend auch die Dokumente <a/> und <a><a><a/></a></a> etc als Instanzen.
• Anwendung des Substitutionsprinzips: Ziel-Patterns mit globalen Elementdeklarationen sind
schwach
‼ Also: RD ⇏ SS, RD ⇏ GoE, VB ⇏ SS, VB ⇏ GoE

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 12


Zwischenstand

Russian Doll Salami Slice

Venetian Blind Garden of Eden

Umwandlungen durch Ersetzen von lokalen Typdefinitionen mit globalen Typdefinitionen


(2 Umwandlungen, von oben nach unten, grün)
Keine Umwandlungen mit Ziel Russian Doll (3 Umwandlungen, nach links oben, grau gestrichelt)
Keine Umwandlungen durch Elimination von lokalen Elementdeklarationen möglich
(4 Umwandlungen, von links nach rechts, grau gepunktet)
Noch offen: GoE ⇒ SS, GoE ⇒ VB, SS ⇒ VB ?
EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 13
... Umwandlungen
Globale Typdefinitionen können lokal gemacht werden, unter der Voraussetzung, dass die
Elementdeklarationen global sind.
Globale Elementdeklarationen können lokal gemacht werden, unter der Voraussetzung, dass die
Typdefinitionen global sind.
‼ Also: GoE ⇒ SS, GoE ⇒ VB und damit auch SS ⇒ VB
Die Voraussetzungen sind jeweils notwendig, da sonst SS ⇒ RD oder VB ⇒ RD folgen würde.
Unter den genannten Voraussetzungen bricht die Umwandlung ab (kein Ripple-Effekt durch
mehrfaches Kopieren von Strukturen, deren Unterstrukturen wieder kopiert werden müssen).
• Beispiel schemaUmwandlungen

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 14


Zwischenstand (12 Umwandlungen diskutiert)
Russian Doll Salami Slice

Venetian Blind Garden of Eden

Umwandlungen durch Ersetzen von lokalen Typdefinitionen mit globalen Typdefinitionen


(2 Umwandlungen, von oben nach unten vertikal, grün)
Keine Umwandlungen mit Ziel Russian Doll (3 Umwandlungen, nach links oben, grau gestrichelt)
Keine Umwandlungen durch Elimination von lokalen Elementdeklarationen möglich
(4 Umwandlungen, von links nach rechts, grau gepunktet)
Umwandlung durch Ersetzen von globalem Konstrukt durch lokales Konstrukt, falls das Gegenstück
auch global ist (2 Umwandlungen, rot)
Umwandlung durch Transitivität (1 Umwandlung, blau)

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 15


Zusammenfassung

Russian Doll Salami Slice

Venetian Blind Garden of Eden

Nur die eingezeichneten Umwandlungen sind möglich.


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.
Außerdem: Ein beliebiges Schema kann nach Venetian Blind umgewandelt werden.

EP (DocEng) | Entwurfsmuster: Mächtigkeit und Umformungen | Sommer 2020 16


Begriffe, Lernergebnisse, Kompetenzen Teil III
Schemasprachen für strukturierte Dokumente
Anne Brüggemann-Klein
TU München
Begriffe Woche 6a
Schemasprache Wertebereich / Typ
Schema / Strukturvorgabe Identity Constraints (Typen ID und IDREF)

Instanz Logische Struktur, physische Struktur


XML-Anwendung Entity-Definition
Metasprache für Markup-Sprachen Entity-Referenz
XML Document Type Definition (DTD)
XML Schema, Schematron, Relax NG
Deklaration von Element / Attribut
Inhaltsmodell
Element Content, Mixed Content

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 2


Lernergebnisse und praktische Kompetenzen
Schemasprachen allgemein
Die Rolle von Schemasprachen für XML-Dokumente beschreiben
Verschiedene Schemasprachen für XML auflisten
Den Unterschied zwischen Schemasprache, Schema und Instanz erklären

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 3


Lernergebnisse und praktische Kompetenzen
XML DTD logische Struktur
Die Konzepte „XML als Metasprache für Markupsprachen“ und „XML-Anwendungen als
Markupsprachen“ erklären
Die Bestandteile einer DTD benennen
Die Rolle des Inhaltsmodells für Elementdeklarationen beschreiben
Erklären, warum DTDs nach dem Salami-Slice Pattern aufgebaut sind
Die Konsequenzen von globalen Elementdeklarationen in DTDs für die Instanzen einer DTD
anwenden (Substitutionsprinzip à XML Schema Struktkurtypen, Woche 7)
Die Begriffe der Wohlgeformtheit und Validität von XML-Dokumenten beschreiben
Die Aufgaben eines validierenden XML-Parsers beschreiben
An Beispielen überprüfen, ob ein XML-Dokument den Vorgaben einer DTD folgt
Für konkrete DTDs die Menge der instanzen beschreiben

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 4


Lernergebnisse und praktische Kompetenzen
XML DTD physische Struktur
Die physische Struktur von XML-Dokumenten im Unterschied zur logischen Struktur definieren
Die verschiedenen Arten von Entitäten (generelle Entitäten, Parameter-Entitäten) beschreiben
Die Definition und Referenzierung von Entitäten im Code erkennen
Verschiedene Einsatzzwecke von Entitäten erläutern
Entitäten als Abkürzungen für Sonderzeichen definieren
Entitäten als Abkürzungen für Textbausteine definieren

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 5


Begriffe Woche 6b
Typ à Vertiefung Woche 7
Strukturtyp (in XML Schema Complex Type)
Datentyp (im XML Schema Simple Type)
Vordefinierter Datentyp
Konstruktor für sebstdefinierten Datentyp
Restriktion / Einschränkung
Facette
Pattern
Listenbildung
Vereinigung

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 6


Lernergebnisse und praktische Kompetenzen
XML Schema Datentypen
Den Bestandteil Typdefinitionen eines XML Schemas kennen
Den Bezug zwischen Datentypen und Simple Types in XML Schema kennen
Datentypen in XML DTD und in XML Schema vergleichen
Den Anwendungsbereich von Datentypen kennen: wem sind sie zuweisbar, wie sehen Werte aus
Die Definitionsmöglichkeiten für Datentypen kennen (drei Konstruktoren)
Definitionen von Datentypen lesen
Beispiele und Gegenbeispiele für Werte von selbstdefinierten Datentypen angeben
Die Werte eines selbstdefinierten Datentyps systematisch beschreiben

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 7


Begriffe Woche 7
Lokale und globale Deklaration eines Elements Pattern (Entwurfsmuster) eines Schemas
Lokale und globale Definition eines Typs Russian Doll

Datentyp (in XML Schema Simple Type) Venetian Blind


Strukturtyp (in XML Schema Complex Type) Salami Slice
Referenz auf globale Elementdeklaration Garden of Eden
Referenz auf globale Typdefinition Substitutionsprinzip

Inhaltsmodell Mächtigkeit von Schemasprachen


Element Content Mächtigkeit von Entwurfsmustern
Mixed Content Umformungen von Entwurfsmustern

Text Content
Attributdeklaration (als Teil einer Typdefinition)

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 8


Lernergebnisse und praktische Kompetenzen
XML Schema Strukturtypen ,,,
Die Bestandteile Elementdeklaration und Typdefinitionen eines XML Schemas kennen
Den Bezug zwischen Strukturtypen und Complex Types in XML Schema kennen
Strukturtypen und Inhaltsmodelle in XML DTD und in XML Schema vergleichen
Die Beziehung zwischen XML Schema und DTDs kennen
Den Anwendungsbereich von Strukturtypen kennen: wem sind sie zuweisbar, wie sehen Werte aus
Die Definitionsmöglichkeiten von Strukturtypen kennen
An Beispielen überprüfen, ob ein XML-Dokument den Vorgaben eines XML Schemas folgt
Für konkretes XML Schema die Menge der instanzen beschreiben

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 9


Lernergebnisse und praktische Kompetenzen
... XML Schema Strukturtypen
Globale und lokale Elementdeklarationen und Typdefinitionen in einem Schema identifizieren
Entwurfsmuster Russian Doll, Salami Slice, Garden of Eden und Venetian Blind für Schemas generell
und ihre Umsetzungen in XML Schema bzw. XML DTD kennen
Die Eigenschaften der verschiedenen Entwurfsmuster beschreiben
Die verschiedenen Entwurfsmuster an Beispielen erkennen
Systematische Umformungen an einem Schema durchführen und ihre Grenzen beschreiben
Mächtigkeit und Umformungsmöglichkeiten der Entwurfsmuster kennen

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil III | Sommer 2020 10


Einordnung Woche 9
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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)
26. Juli 2020 Ende der Vorlesungszeit (nach real 14 Wochen)
Ab 27. Juli Optionales Zusatzangebot zur Konsolidierung und Klausurvorbereitung Neu
Betreuung von Moodle-Foren und eventuell Sprechstunde(n)

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 2


Einordnung Teil IV
Bisher (Teile II und III)
• Kodierung von strukturierten Dokumenten mit XML
• Modellierung von XML-Dokumenten mit XML Information Set (Baumdiagramme)
• Beschreibung von Klassen von Dokumenten mit Schemata (DTD, XML Schema)
Jetzt (Teil IV)
• Bearbeitung von strukturierten Dokumenten (Abfrage XQuery, Transformation XSLT)
• auf Grundlage der Datenmodelle XML Information Set (Baumdiagramme) und XDM

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 3


Einstieg in Woche 9
Lokalisierung von XML-Komponenten mit XPath
• definiert Ausdrücke, mit denen man Pfade oder Navigationen in Dokumenten beschreibt
• der Ausdruck selektiert im Dokument die Endpunkte dieser Pfade à Mini-Query-Sprache
• Komponente von XQuery und XSLT
Beispiel
• XPath-Ausdruck /bookClub/book/author selektiert alle Elemente author in bookClub, die durch Pfade
von der Wurzel über Elemente bookClub und book erreicht werden können à alle Elemente author
Außerdem: Datenmodell XDM
• bildet Fragmente von XML-Dokumenten ab, z.B. als Zwischen- oder Endergebnisse von Queries
• basiert auf und erweitert das XML Information Set (Baumdiagramme) für XML-Dokumente
Beipiel
• zeige alle Knoten an, die Textinhalt „xxx“ enthalten: Ergebnis umfasst verschiedene, isolierte Knoten

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 4


Agenda Woche 9: Praxis à Grundlagen à Praxis
Praxis
• Einstieg durch selbständiges Durcharbeiten durch XPath-Tutorial von W3Schools
- https://www.w3schools.com/xml/xpath_intro.asp
- Ausprobieren der Beispiele mit https://www.freeformatter.com/xpath-tester.html
(für sogenannte absolute Pfadausdrücke, die mit / beginnen)
• Optional: Einlesen in das Thema in SelfHTML (https://wiki.selfhtml.org/wiki/XML/XSL/XPath) oder
Wikipedia (https://de.wikipedia.org/wiki/XPath)
Grundlagen
• Video-Lektionen wie üblich
• präzisieren, wo die oben genannten Tutorials zu kurz greifen
Praxis
• Übungsaufgaben
• eventuell ein Moodle-Test

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 5


Agenda Woche 9: Themen der Video-Lektionen
a. Einordnung
b. Datenmodell XDM
c. XPath: Navigation über Knotenbeziehungen (Achsen)
d. XPath: einfacher Location Path Ausdruck (Schritt)
- ausführliche und abgekürzte Schreibweise
- XPath am Beispiel (bookClub)
- Auswertung von XPath-Ausdrücken (Kontext)
e. XPath: allgemeiner Location Path Ausduck (Pfad)
- ausführliche und abgekürzte Schreibweise
- Weitere Arten von Ausdrücken und Konvertierungsregeln
- Weitere XPath-Ausdrücke
Fallstudie bookClub (auf Moodle, erweitert um XPath-Beispiele)

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 6


Begriffe Woche 9
Datenmodell für XML Abfragesprache
XML Information Set Auswertung

Baumdiagramm Kontextknoten
XML Data Model (XDM) Navigation
Sequenz Bezug zu XQuery
Location Path Ausdruck Bezug zu XSLT

Step
Path
Achse
Knotentest
Prädikat

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 7


Feinstruktur Instruktionseinheiten Teil IV
Teil IV Bearbeitung von strukturierten Dokumenten
(Wochen 9–11)
Basics Vertiefung
• [W9] Modellierung von XML-Strukturen • Vertiefung XSLT: funktionale Programmierung
mit XQuery and XPath Data Model XDM
• Formatierung von XML-Dokumenten
• [W9] Lokalisieren von XML-Komponenten mit XSL-FO
mit XPath
• Aktualisieren von XML-Dokumenten mit
• [W10] Abfrage von XML-Dokumenten XQuery Update Facility
mit XQuery
• [W11] Transformation von XML-Dokumenten
mit XSLT

EP (DocEng) | Einordnung Woche 9 | Sommer 2020 8


Das Datenmodell XDM

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

EP (DocEng) | Datenmodell XDM | Sommer 2020 2


Warum ein weiteres Modell?
Begrenzung von XML Information Set / Baumdiagramm: modelliert ganze XML-Dokumente
Bei Abfragen (Queries) können als Zwischen- oder Endergebnisse auch Fragmente aus mehreren
XML-Dokumenten vorkommen
à Abgeschlossenheit des Datenmodells ist nicht gegeben
Das Datenmodell XDM erweitert XML Information Set um solche Fragmente
à abgeschlossenes Datenmodell für XPath, XQuery, XSLT
XQuery and XPath Data Model 3.0 (W3C Recommendation 8 April 2014)
& https://www.w3.org/TR/2014/REC-xpath-datamodel-30-20140408/
Basierend auf XML Information Set (W3C Recommendation 4. Februar 2004)
& https://www.w3.org/TR/xml-infoset/

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?

EP (DocEng) | Datenmodell XDM | Sommer 2020 3


Datenmodell XDM
XDM hat
• konzeptuelle Sicht auf Komponenten von XML-Dokumenten als Knoten
im Sinne von XML Information Set
• konzeptuelle Sicht auf Daten als Sequenzen von skalaren Daten und Knoten

Datum in XDM ist (immer flache!) Sequenz von


• einfachen Daten vom Typ number, string, boolean, ...
• Referenzen auf Komponenten / Bestandteile eines XML-Dokuments:
Knoten / Information Items im Sinne von XML Information Set
- NB: an jedem Knoten „hängt“ Information zum Dokumentenzusammenhang dran

Achtung
• Datenmodell XDM ist abstrakt (wie XML Information Set)
• es gibt keine standardisierte Notation für Sequenzen

EP (DocEng) | Datenmodell XDM | Sommer 2020 4


XDM am Beispiel: das XML-Dokument

EP (DocEng) | Datenmodell XDM | Sommer 2020 5


XDM am Beispiel: Sequenz als Query-Ergebnis
Query A
• Welche Datumsangaben in Elementen born und died kommen in dem Dokument vor, in
umgekehrter chronologischer Reihenfolge?
• Ergebnis ist Sequenz von skalaren Werten (1971-10-25, 1920-01-08, 1867-08-22)

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>

EP (DocEng) | Datenmodell XDM | Sommer 2020 6


XPath: Navigation über Knotenbeziehungen
(Achsen)

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

EP (DocEng) | Navigation über Achsen | Sommer 2020 2


Navigation beruht auf Beziehungen zw. Knoten
Beziehungen von Knoten zu Knoten, direkt in XML Information Set oder abgeleitet
• Eltern-Beziehung (parent)
- von: Elementknoten, Textknoten
- zu: Wurzelknoten oder Elementknoten in der übergeordneten Hierarchiestufe
- von: Attributknoten
- zu: Elementknoten, zu dem das Attribut gehört
• Kind-Beziehung (child)
- von: Elementknoten, Wurzelknoten
- zu: Elementknoten und Textknoten in der untergeordneten Hierarchiestufe
• Attribut-Beziehung (attribute)
- von: Elementknoten
- zu: zum Elementknoten gehörigen Attributknoten
• Vorfahre (ancestor), Nachfahre (descendant)
• Identität (self)

EP (DocEng) | Navigation über Achsen | Sommer 2020 3


Welche Beziehungen sind hier abgebildet?
In welcher Beziehung stehen die numerierten Knoten jeweils zu dem grauen Knoten?
• Die numerierten Knoten sind ... von den grauen Knoten
• Die numerierten Knoten bilden eine Sequenz im Sinne von XDM

EP (DocEng) | Navigation über Achsen | Sommer 2020 4


Achsen in XPath
In XPath heißen diese Beziehungen Achsen
• bestimmen die Richtung, in die navigiert werden kann
Achsen in XPath
• parent, ancestor, ancestor-or-self
• child, descendant, descendant-or-self
• attribute
• self
• preceding, preceding-sibling, following, following-sibling
• namespace (nicht Bestandteil unseres Ausschnitts von XML Information Set)
Achsen werden relativ zu Kontextknoten (beliebigem Ausgangsknoten) interpretiert
• von Kontextknoten ausgehend, bestimmt die Achse eine Sequenz von Knoten gemäß XDM
Beispiele unter https://de.wikipedia.org/wiki/XPath#Achsen (Kontextknoten D)

EP (DocEng) | Navigation über Achsen | Sommer 2020 5


https://de.wikipedia.org/wiki/XPath#Achsen

EP (DocEng) | Navigation über Achsen | Sommer 2020 6


XPath: einfacher Location Path Ausdruck
(Schritt)
Anne Brüggemann-Klein
TU München
Einfacher Location Path Ausdruck: Step / Schritt
Achsen alleine sind zu unspezifisch für Abfragen, deshalb Steps (oder Schritte)
Syntax für Step (oder Schritt)
• Achse :: Knotentest [ Prädikat ] [ Prädikat ] ...
- Achse kann sein: child (default), parent, descendant, self, attribute (@) ...
- Knotentest kann sein: Name, beliebiger Name (*), Typ (text(), node())
- Prädikat: beliebiger XPath-Ausdruck, der zu Wahrheitswert evaluiert (evtl. Konvertierung)
• Abkürzung für Kombination aus Achse und Knotentest: self::node() (.), parent::node() (..)
Auswertung eines Steps, von einem Kontextknoten ausgehend,
Achtung: Ohne Kontextknoten
• bestimmt eine Sequenz von Knoten über die Achse
keine Auswertung!
• selektiert daraus die Knoten, die den Knotentest bestehen
• selektiert daraus die Knoten, die die Prädikate erfüllen Online-Tutorials betonen das kaum.
In Werkzeugen Setzen eines
Ergebnis der Auswertung: eine Sequenz von Knoten gemäß XDM Kontextknotens oft nicht möglich.

EP (DocEng) | Einfacher Location Path Ausdruck (Schritt) | Sommer 2020 2


XPath am Beispiel: BookClub-Daten ...
Kodierung in XML à bookClub.xml
Hierarchische Struktur (schematisch)
- bookClub
- book* @category @isbn
- title
- author*
- year
- reviews
- review*
- reviewer
- rating
- title
- text
- date

EP (DocEng) | Einfacher Location Path Ausdruck (Schritt) | Sommer 2020 3


... XPath am Beispiel: BookClub-Daten
Beispiele (auszuwerten von Wurzelknoten ausgehend)
• descendant::author
• descendant:: book[1]
• descendant::text() [contains(., "Fun")] Typ Textknoten !
• descendant::text [contains(., "Fun")] Element mit Namen text !
• descendant::text [contains(., “fun")] Element mit Namen text !
• descendant::review [contains(title, "Fun")] oder: ... [[contains(child::title, "Fun")]]
• descendant::* [contains(title, "Fun")]
Ausführung mit
• oXygen (Achtung, benötigt / am Anfang, also /descendant::author)
• https://www.freeformatter.com/xpath-tester.html

EP (DocEng) | Einfacher Location Path Ausdruck (Schritt) | Sommer 2020 4


XPath: allgemeiner Location Path Ausdruck
(Pfad)
Anne Brüggemann-Klein
TU München
Allgemeine Location Path Ausdrücke: Pfade
Pfad ist zusammengesetzt aus mehreren Schritten
Syntax
• relativer Pfad: Step / Step / ... (beliebig viele Steps, durch / getrennt)
- Evaluierung beginnt beim Kontextelement
• absoluter Pfad: / Step / Step / ... (beginnt mit /, dann beliebig viele Steps, durch / getrennt)
- Evaluierung beginnt beim Wurzelknoten, unabhängig vom Kontextelement
• Abkürzung: // für /descendant-or-self::node()/

Beispiele (auszuwerten von beliebigen Kontextknoten in bookClub.xml ausgehend)


• / bookClub / book [position() = 2] / author
• Titel von Büchern mit Review
- // book [ count (.//review) > 0 ] / title Achtung: . //
- // book / title [ count (..//review) > 0]

Navigation auch in Prädikaten möglich !! Oft mehrere Lösungen für eine Query !!

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 2


Zusammenfassung Abkürzungen
Abkürzung für vollständigen Schritt, zur Verwendung in Pfaden
- // /descendant-or-self::node()/ oft als .// verwendet
- Vorsicht bei Abkürzung: .//abc enthält NICHT den Kontextknoten, selbst wenn der abc heißt
- statt dessen: ./descendant-or-self::abc benutzen, ohne Abkürzung

Abkürzungen für Verwendung innerhalb eines Schritts


• Kombination aus Achse und Knotentest, ergänzbar durch Prädikate
-. self::node()
- .. parent::node()
• Abkürzungen für Achsen
- <nichts> child::
-@ attribute::

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 3


Auswertung eines Location Path Ausdrucks ...
Auswertung eines einfachen Location Path Ausdrucks, bestehend aus einem Schritt, von einem
Kontextknoten ausgehend
• die Achse bestimmt eine Sequenz von Knoten
• der Knotentest selektiert daraus die Knoten, die den Knotentest bestehen
• jedes Prädikat selektiert daraus nacheinander die Knoten, die die Prädikate erfüllen
Achtung: Prädikate können wieder XPath-Ausdrücke enthalten, die zur Auswertung einen
Kontextknoten benötigen
Ø Kontextknoten zur Auswertung des Prädikats ist der Knoten, der gerade getestet wird
Ergebnis der Auswertung: eine Sequenz von Knoten gemäß XDM

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 4


... Auswertung eines Location Path Ausdrucks
Auswertung eines beliebigen Location Path Ausdrucks, bestehend aus mehreren Schritten, von einem
Kontextknoten ausgehend
• falls absoluter Location Path Ausdruck: Wurzelknoten / Document Node wird Kontextknoten
• für ersten Schritt im Pfadausdruck Auswertung von Kontextknoten ausgehen, führt zu
Knotensequenz als Ergebnis
• für jeden weiteren Schritt
- betrachte jeden Knoten in der Ergebnissequenz der Auswertung des vorigen Schritts
- werte den aktuellen Schritt mit diesem Knoten als Kontextknoten aus
Ø Knotensequenz als Teilergebnis für diesen Knoten
- hänge die Teilergebnisse zu einer großen Sequenz zusammen
Ø Knotensequenz als Ergebnis der Evaluation von diesem Schritt

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 5


Weitere Typen, Arten von Ausdrücken in XPath
Items in Sequenz gemäß XDM können auch skalare Werte von Typen wie Number, String, Boolean
enthalten. Wo kommen die her?
XPath-Funktionen wie count, avg (Eingabe ist Sequenz, Ausgabe ist Number), z.B. hier:
• count(/bookClub/book[count(author)>1])
Vergleiche wie >, <, = mit Booleschem Ergebnistyp (wahr oder falsch)
Boole‘sche Operationen not, and, or
Verknüpfen von Sequenzen mit |, z.B. hier:
• (//section | //subsection) [title=´Introduction´]
(//section | //subsection) //para
(//section | //subsection) //para)[position() = last()]

Anwendungen häufig in Prädikaten

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 6


Konvertierungsregeln in Prädikaten
Prädikate in XPath-Ausdrücken evaluieren immer zu Booleschen Werten
• Filterfunktion für Knotenkandidaten
Automatische Konvertierung, wenn das Prädikat einen anderen Typ hat
• Zahl wird als Position interpretiert (Zählung beginnt bei 1),
z.B. Query nach Erstautor*innen
- //book/author [position() = 1] oder einfach //book/author [1]
• Nicht-leere Sequenz wird als wahr interpretiert, z.B. sind äquivalent:
- //book [count(.//review) > 0]
- //book [.//review]
• Leere Sequenz wird als falsch interpretiert, z.B. sind äquivalent:
- //book [count(.//review) = 0]
- //book [not(.//review)]
• Ähnlich: leerer String à falsch, nicht-leerer String à wahr

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 7


Weitere Beispiele
para *
text() node()
@version descendant::para
ancestor::div ancestor-or-self::div
.//para self::para
chapter//para */para
/ /descendant::para
./descendant-or-self::olist/item
.//olist/item Achtung Falle: Kindachse
./descendant-or-self::node()/olist/item
para[1]
para[last()-1]
*[self::chapter or self::appendix][last()]
para[@type=´warning´][5] Achtung: Prädikate nicht vertauschbar, kein UND
para[5][@type=´warning´]
chapter[title=´Introduction´]
chapter[title]

EP (DocEng) | Allgemeiner Location Path Ausdruck (Pfad) | Sommer 2020 8


Einordnung Woche 10
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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)

26. Juli 2020 Ende der Vorlesungszeit (nach real 14 Wochen)


Ab 27. Juli Optionales Zusatzangebot zur Konsolidierung und Klausurvorbereitung
Betreuung von Moodle-Foren und eventuell Sprechstunde(n)

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 2


Feinstruktur Instruktionseinheiten Teil IV
Teil IV Bearbeitung von strukturierten Dokumenten
(Wochen 9–11)
Basics Vertiefung
• [W9] Modellierung von XML-Strukturen • Vertiefung XSLT: funktionale Programmierung
mit XQuery and XPath Data Model XDM
• Formatierung von XML-Dokumenten
• [W9] Lokalisieren von XML-Komponenten mit XSL-FO
mit XPath
• Aktualisieren von XML-Dokumenten mit
• [W10] Abfrage von XML-Dokumenten XQuery Update Facility
mit XQuery
• [W11] Transformation von XML-Dokumenten
mit XSLT

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 3


Einordnung XQuery
XPath als „kleine“ Query-Sprache für XML-Dokumente: beschränkt auf Selektion
• Navigation durch XML-Dokument entlang von Achsen, Filterung von Knoten durch Bedingungen
- einzelner Step (Schritt)
- aus Steps zusammengesetzter Pfad à Location Path Ausdrücke
• Weitere Ausdruckstypen in XPath
• Systematische Erläuterung der Auswertung von XPath-Ausdrücken
XQuery als voll ausgebildete Query-Sprache für XML-Dokumente,
in Analogie zu SQL: unterstützt
• Konstruktion (z.B. Gruppierung)
• Sortierung
• Joins

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 4


Begriffe Woche 10
Abfragesprache Abgeschlossenheit
SQL für Relationales Modell Komponierbarkeit

XML-Ausdruck Vollständigkeit
FLWOR-Ausdruck Beziehung XPath, XQuery, XSLT
Klausel
Evaluierungskontext
Auswertung oder Evaluation
Join

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 5


Praxis à Grundlagen à Praxis ...
Praxis
• Einstieg durch selbständiges Durcharbeiten durch XQuery-Tutorial von W3Schools
(deckt auch XPath und XDM mit ab, ohne explizite Markierung)
- https://www.w3schools.com/xml/xquery_intro.asp
• Gute Alternative für XQuery ist der Bereich auf TutorialsPoint
- https://www.tutorialspoint.com/xquery/
• Ausprobieren von Beispielen online (Kontext durch Hochladen eines XML-Dokuments gesetzt)
- http://www.videlibri.de/cgi-bin/xidelcgi
[versteht XQuery 3.0, offenbar ein Bug bei Definition von Variablen im Prolog]
- http://www.xpathtester.com/xquery
[versteht nur XQuery 1.0]

• Optional: Einlesen in das Thema


- Wikipedia (https://de.wikipedia.org/wiki/XQuery)
- Michael Kay (https://www.progress.com/tutorials/xquery/learn-xquery-in-10-minutes)

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 6


... Praxis à Grundlagen à Praxis
Grundlagen
• Video-Lektionen wie üblich
• mit Fokus auf Grundsätzlichem

Praxis
• Übungsaufgaben, Moodle-Test

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 7


Agenda Woche 10: Themen der Video-Lektionen
a. Einordnung
b. Einführung: XQuery aus der Vogelperspektive
c. Einfache XQuery-Ausdrücke: XPath und XML-Ausdrücke
d. FLWOR-Ausdrücke
e. Semantik: Auswertung von FLWOR-Ausdrücken
f. Zusammenfassung (Eigenschaften von XQuery)
g. Demo: Exploration großer Datenbestände mit XQuery
Fallstudien
• bookClub (auf Moodle, erweitert um XPath- und XQuery-Beispiele)
• xQueryBeispiele, teilweise adaptiert von Møller und Schwartzbach [http://www.brics.dk/ixwt/]
• Mondial (Exploration großer Datenbestände mit XML-Datenbanksystem BaseX)

EP (DocEng) | Einordnung Woche 10 | Sommer 2020 8


Einführung: XQuery aus der Vogelperspektive

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

EP (DocEng) | XQuery aus der Vogelperspektive | Sommer 2020 2


Verhältnis zu XPath und XDM
Verwendet XPath als Teilsprache und als Komponente
Schwäche von XPath
• Kann nur Knoten selektieren, wie sie im Eingabedokument vorkommen
Ø Filterung von Knoten, keine neuen Berechnungen
Datenmodell XDM als Basis
• Eingabe, Zwischenergebnisse und Ergebnis einer Query: Sequenz von Knoten
Wie XSLT berechenbarkeits-universell

EP (DocEng) | XQuery aus der Vogelperspektive | Sommer 2020 3


Funktionalität von XQuery
Neu anordnen / sortieren
Neu gruppieren / Container generieren
Strukturen ändern / neue Strukturen erzeugen
Beziehungen zwischen Teilen von Daten auswerten (klassisch in Datenbanken: Joins)
Daten ändern (Updates, mit XQuery Update Facility)

EP (DocEng) | XQuery aus der Vogelperspektive | Sommer 2020 4


Einfache XQuery-Ausdrücke

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

XQuery Prozessor XIDEL: http://videlibri.sourceforge.net/cgi-bin/xidelcgi


(Kontext durch Hochladen des XML-Dokuments gesetzt, Output Options Node Format auf XML)
oder http://www.xpathtester.com/xquery
//book[.//review]/title

EP (DocEng) | Einfache XQuery-Ausdrücke | Sommer 2020 2


Template-Syntax (XML-Ausdruck)
Gängig und hier benutzt: Template-Syntax; d.h. Klartext-XML mit eingebetteten Queries
für dynamisch zu berechnende Inhalte à JSX in React
• Innerhalb einer Query ist XML-Element mit Inhalt möglich
• innerhalb von XML Wechel in XQuery-Syntax mit {}
{} setzt Auswertungs-Kontext innerhalb von XML-Syntax
Beispiel bookClubSummary.xq: XML-Template mit XPath-Ausdrücken für dynamische Inhalte
Achtung Bug bei XIDEL mit Definition der Variablen, besser ist http://www.xpathtester.com/xquery
xquery version "1.0";
declare variable $bookClub := doc("bookClubRaw.xml"); (: := / :)

<summary>
<bookCount>{count($bookClub//book)}</bookCount>
<avgRating>{avg($bookClub//rating)}</avgRating>
<avgRatingsPerBook>{count($bookClub//rating) div
count($bookClub//book)}</avgRatingsPerBook>
</summary>

EP (DocEng) | Einfache XQuery-Ausdrücke | Sommer 2020 3


FLWOR-Ausdrücke

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>

Weitere Beispiele bookSummariesX.xq, hier bookSummariesA.xq


for $book in //book
return
<summary>
{$book/title}
<noReviews>{count($book//review)}</noReviews>
<avgRating>{avg($book//rating)}</avgRating>
</summary>
Achtung: Auswertung der Klausel return für jede Variablen-Bindung $book

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 2


Schachtelung von XML-Ausdrücken
<bookClubSummary>{
for $book in //book
return
<summary>
{$book/title}
<noReviews>{count($book//review)}</noReviews>
<avgRating>{avg($book//rating)}</avgRating>
</summary>
}</bookClubSummary>
Achtung: was wird nur einmal ausgegeben, was wird iteriert ausgegeben?

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 3


FLWOR-Ausdruck ...
FLWOR-Ausdruck (ausgesprochen „FLOWER“) mit Klauseln
• For, Let, Where, Order by, Return
Beispiel bookSummariesC.xq
for $book in //book
let $noReviews := count($book//review)
let $avgRating := avg($book//rating)
where $noReviews > 0
order by $avgRating descending
return
<summary>
{$book/title}
<noReviews>{$noReviews}</noReviews>
<avgRating>{$avgRating}</avgRating>
</summary>

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 4


... FLWOR-Ausdruck
Klauseln for und let können wiederholt werden und in beliebiger Reihenfolge vorkommen
Mindestens eine Klausel for oder let muss vorkommen
Klauseln where und order by sind optional
Klausel return ist verpflichtend

FLWOR-Ausdrücke sind Verallgemeinerung von SQL SELECT

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 5


Kombiniert: XML-Ausdrücke, FLWOR-Ausdrücke
<bookClubSummary> à
<bookCount>{count($bookClub//book)}</bookCount>
<avgRating>{avg($bookClub//rating)}</avgRating> <bookSummaries>{
for $book in $bookClub//book
<avgRatingsPerBook>{
let $noReviews := count($book//review)
count($bookClub//rating)
let $avgRating := avg($book//rating)
div count($bookClub//book)
where $noReviews > 0
}</avgRatingsPerBook>
(: order by $noReviews descending :)
<bookSummaries>...</bookSummaries>
order by $avgRating descending
</bookClubSummary>
return
<bookSummary>
{$book/title}
<noReviews>{$noReviews}</noReviews>
<avgRating>{$avgRating}</avgRating>
</bookSummary>
}</bookSummaries>

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 6


Weitere Beispiele
Beispiele in Verzeichnis xQueryBeispiele übernommen (teilweise adaptiert) aus
A. Möller, M. Schwartzbach:
An Introduction to XML and Web Technologies.
Addison-Wesley 2006.
[http://www.brics.dk/ixwt/]
FLWOR: doublemajors.xq
Join: fridge.xq und Varianten
Geschachtelte Queries: insideout.xq
Sortierung: merits.xq
Funktionen: gpa.xq
XML-Konstruktoren (berechnetes Markup): bilingual.xq

EP (DocEng) | FLWOR-Ausdrücke | Sommer 2020 7


Semantik: Auswertung von FLWOR-Ausdrücken

Anne Brüggemann-Klein
TU München
Szenario „publications“

EP (DocEng) | Auswertung von FLWOR-Ausdrücken | Sommer 2020 2


Auswertung von FLWOR-Ausdrücken …
Globaler vs lokaler Bezug am Beispiel
for $publ in doc("publications.xml")//publication
for $person in $publ//person
let $isbn := $publ/isbn
order by $isbn, $person
return <publication
isbn = {$isbn}">{xs:string($person)}</publication>

Äußerste For-Schleife ergibt eine Folge von Bindungen (Tuple)


($publ = <pX>; $publ = <pY>)
Innere For-Schleife ergibt Folge für jeden Eintrag
($publ = <pX> $person = <per1>; $publ = <pX> $person = <per2>;
$publ = <pY> $person = <per3>; $publ = <pY> $person = <per4>; $publ = <pY> $person = <per5>)

EP (DocEng) | Auswertung von FLWOR-Ausdrücken | Sommer 2020 3


… Auswertung von FLWOR-Ausdrücken
Let fügt jedem Eintrag eine weitere Bindung hinzu
(
$publ = <pX> $person = <per1> $isbn = <iX>;
$publ = <pX> $person = <per2> $isbn = <iX>;
$publ = <pY> $person = <per3> $isbn = <iY>;
$publ = <pY> $person = <per4> $isbn = <iY>;
$publ = <pY> $person = <per5> $isbn = <iY>
)
Order by sortiert diese Folge von Bindungen
Return wird auf jede der Bindungen angewendet (wie Bang-Operator)
Ergebnis ist Sequenz von Items in XDM

EP (DocEng) | Auswertung von FLWOR-Ausdrücken | Sommer 2020 4


Unterschied zwischen for und let
Beispiele aus Møller & Schwartzbach: An Introduction to XML and Web Technologies.
• auch in xQueryBeispiele demo.for.for.xq etc.

EP (DocEng) | Auswertung von FLWOR-Ausdrücken | Sommer 2020 5


Zusammenfassung: Ausdrucksfähigkeit und
Eigenschaften von XQuery
Anne Brüggemann-Klein
TU München
Ausdrucksfähigkeit: Joins ...
Verschiedene Varianten von Joins (innere Joins) in relationalen Datenbanken
[en.wikipedia.org/wiki/Relational_algebra]
Natürlicher Join

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 2


... Ausdrucksfähigkeit: Joins ...
Theta Join

Semi Join

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 3


... Ausdrucksfähigkeit: Joins ...
Gemeinsamer Nenner
• zwei Tabellen werden „gekreuzt“ (im Sinne eines karthesischen Produkts) à konzeptuell
• gewisse Kombinationen von Werten, die bestimmte Bedingungen erfüllen, werden übernommen
- eventuell auch nur Werte aus einer Tabelle (Semi-Joins)
Verallgemeinerung von Tabellen zu hierarchischen Strukturen
• ausgewählte Knoten aus zwei Strukturen (oder aus zwei Bereichen einer einzigen Struktur)
werden „gekreuzt“ (im Sinne eines karthesischen Produkts) à konzeptuell
- beinhaltet Selektion
• gewisse Komponationen von Werten, die bestimmte Bedingungen erfüllen, werden übernommen
- eventuell auch nur Werte aus einer Struktur (wie bei Semi-Join)
• Zusammensetzen des Ergebnisses

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 4


... Ausdrucksfähigkeit: Joins
Umsetzung mit XQuery
• Selektion der zu betrachtenden Knoten in jedem der zwei Bereiche
- XPath-Ausdruck (oder sogar allgemeinerer XQuery-Ausdruck)
- Achtung Power von Abgeschlossenheit durch XDM und Komponierbarkeit: es muss nur eine
Sequenz rauskommen
• „Kreuzen“ von zwei Sequenzen (Durchgang durch alle Kombinationsmögilchkeiten)
- Geschachelte For-Klauseln à konzeptuell, evtl. Query-Optimierung
• Übernehmen von Kombinationen, die gewisse Bedingungen erfüllen
- Where-Klausel
• Zusammensetzen des Ergebnisses
- Return-Klausel
Was fällt auf: Wir brauchen keine Let-Klausel
• die sind tatsächlich generell konzeptuell überflüssig, da nur Konstanten für Abkürzungen
(Werte sind nicht veränderbar) à deklarative Sprache
EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 5
Joins am Beispiel
Im Ordner xQueryBeispiele
• receipes.xml
• fridge.xml
• Queries um zu überprüfen, welche Rezepte man mit dem Kühlschrankinhalt zubereiten kann
- fridgeClassicalJoin.xql
- fridgeSensible.xql

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 6


Ausdrucksfähigkeit Universalität
Ist XQuery berechenbarkeits-universell (Turing-universell)?
• mit bisher besprochenen Sprachmitteln NICHT
• FLWOR-Ausdruck ist „geschlossener“ Ausdruck
- Tiefe der Ausgabe ist von Tiefe der Eingabe abhängig
- man kann also nicht aus Eingabe <x>n</x> mit ganzer Zahl n eine Kette der Tiefe n erzeugen
• XQuery hat aber Möglichkeiten, Funktionen zu definieren, die sich rekursiv aufrufen können
• XQuery mit Funktionen ist berechenbarkeits-universell (Turing-universell)
Demonstration von Funktionen im Ordner xQueryBeispiele
• Datei students.xml
• Query gpa.xql, die mit Hilfe einer Funktion die Durchschnittsnoten der Studierenden berechnet

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 7


Eigenschaften von XQuery
XQuery ist das SQL für XML
• XML verallgemeinert Relationen (strukturell, textuell)
• XQuery verallgemeinert entsprechend SQL
XQuery ist abgeschlossen gegenüber dem Datenmodell XDM
• Eingaben, Zwischenergebnisse, Ergebnisse sind Sequenzen gemäß XDM
• Queries sind aus Teil-Queries komponierbar
XQuery ist eine funktionale Programmiersprache
• die Ausführung einer XQuery ist frei von Seiteneffekten
• wiederholte Anwendung einer XQuery auf die gleiche Eingabe führt zum gleichen Ergebnis
XQuery liest Daten und konstruiert daraus Ergebnisse, aber verändert die Daten nicht
• Updates mit weiterer Sprache namens XQuery Update Facility
XQuery ist berechenbarkeits-universell (Turing-universell)

EP (DocEng) | Zusammenfassung: Eigenschaften von XQuery | Sommer 2020 8


Einordnung Woche 11
Wo kommen wir her, wo gehen wir hin?
Anne Brüggemann-Klein
TU München
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)

26. Juli 2020 Ende der Vorlesungszeit (nach real 14 Wochen)


Ab 27. Juli Optionales Zusatzangebot zur Konsolidierung und Klausurvorbereitung
Betreuung von Moodle-Foren und eventuell Sprechstunde(n)

* Instruktionseinheiten, unterteilt in Basics und Vertiefung mit integrierter Übung

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 2


Feinstruktur Instruktionseinheiten Teil IV
Teil IV Bearbeitung von strukturierten Dokumenten
(Wochen 9–11)
Basics Vertiefung
• [W9] Modellierung von XML-Strukturen • Vertiefung XSLT: funktionale Programmierung
mit XQuery and XPath Data Model XDM
• Formatierung von XML-Dokumenten
• [W9] Lokalisieren von XML-Komponenten mit XSL-FO
mit XPath
• Aktualisieren von XML-Dokumenten mit
• [W10] Abfrage von XML-Dokumenten XQuery Update Facility
mit XQuery
• [W11] Transformation von XML-Dokumenten
mit XSLT

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 3


XQuery und XSLT zur Bearbeitung strukt. Doks
Perspektive XQuery
• Abfrage von Dokumentenbeständen
- Extraktion von Information, eventuell Aktualisierung am Platz (XQuery Update Facitlity)
• Schwerpunkt daten-orientierte Dokumente
• Paten sind Datenbanken, Informationssysteme
Perspektive XSLT
• Transformation von Dokumenten
- Umformung von XML-Dokumenten von einem Format in ein anderes
• Paten sind Verlagswesen, technische Dokumentation
- Single-Source Publishing, Formatierung
• Schwerpunkt text-orientierte Dokumente (auch Anpassung von Datenformaten)
Gleiche Mächtigkeit, große Überlappung, unterschiedliche Passung für Aufgabengebiete

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 4


XSLT, XDM und XPath
XSLT basiert auf Datenmodell XDM
XPath ist Komponente (nicht als Teilsprache) von XSLT
• im Unterschied zu XQuery

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 5


Agenda Woche 11: Themen der Video-Lektionen
a. Einordnung
b. XSLT aus der Vogelperspektive
c. Einfache Templates (Basiskomponente von XSLT) und XSLT-Programme nach dem Pull-Prinzip
d. Erweiterte Templates (Basiskomponente von XSLT) und XSLT-Pogramme nach dem Push-Prinzip
e. Prozessmodell XSLT
f. Vertiefung und Fallstudien für XSLT
g. Vergleich XQuery und XSLT

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 6


Agenda Woche 11: Fallstudien
DocBook guessTheNumberDokumentation
Shakespeare-Dramen (hamlet)
Students (xQueryBeispiele)
Peanuts (xsltBeispieleLibrary)
bookClub (auf Moodle, erweitert um XSLT-Beispiele)
Außerdem als Ausblick
• Compiler-Buch (xsltBeispieleBook)

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 7


Agenda Woche 11: Werkzeuge
W3Schools
• sehr schönes inkrementell aufgebautes und INTERAKTIVES XSLT Tutorial
• https://www.w3schools.com/xml/xsl_intro.asp
Moderne Browser sind (noch) XSLT-fähig
• Demo in w3Schools funktioniert weil XML-Datei von Server kommt
• Probleme wenn XML-Datei aus Dateisystem kommt, deshalb hier nicht empfohlen
Online-Werkzeug freeFormatter
• https://www.w3schools.com/xml/xsl_transformation.asp
• https://www.freeformatter.com/xsl-transformer.html

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 8


Begriffe Woche 11
Transformation (im Gegensatz zu Abfrage) Prozessmodell
XSLT-Programm (Stylesheet) Rekursion

XSLT-Prozessor Case Studies für XSLT: Formatierung


Template Case Studies für XSLT: Filterung
Literal Result Element XSLT, XQuery und text-orientierte (narrative)
Dokumente
Push-Prinzip
XSLT, XQuery und daten-orientierte Dokumente
Pull-Prinzip
Zusammenhang XSLT, XQuery, XPath und XDM
Fill-in-the-Blanks-Stil
Zusammenhang XSL, XSLT, XSL-FO
Navigierender Stil
Vergleich XSLT und XQuery
Regel-basierter Stil
Funktionale Programmierung mit XSLT

EP (DocEng) | Einordnung Woche 11 | Sommer 2020 9


Einführung: XSLT aus der Vogelperspektive

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

EP (DocEng) | XSLT aus der Vogelperspektive | Sommer 2020 3


… Steckbrief XSLT
XSLT-Sprache
• deklarativ (regelbasiert), berechenbarkeitsuniversell
• mit XQuery das SQL für XML: XQuery als Abfragesprache, XSLT für Komposition von Ergebnissen
und Aufbereitung text-orientierter (narrativer) Dokumente
- Drehscheiben-Charakter (Zwischenformat)
XML
- Cross-Media- und Multi-Channel-Fähigkeit RDMS

- Unterstützung von Single-Source Publishing XML


GIF
vCard HTML
• XML-Syntax Abfrage SOAP
iTunes Transformation RTF
XSLT-Prozessor Verarbeitung
HTML PDF
EPUB
• Interpreter ID3 DOC
XML WML
• arbeitet auf Datenmodell
Spezialisierung auf XML-Bearbeitung
[in Abgrenzung zu allgemeiner Programmiersprache / XML-API]

EP (DocEng) | XSLT aus der Vogelperspektive | Sommer 2020 4


XML wXSLT XML
Transformation zwischen Formaten bzw. Baumstrukturen, basierend auf Datenmodell XDM
(XML Information Set)
<...>
<...>
<...>...</...>
XML w XML (HTML, Text)
<...>...</...>
</...>
<XSLT/>
<...>
<...>...</...>
<...>...</...>
</...>
<...> </...>
<...> <...>
<...>...</...> <...>
<...>...</...> <...>...</...>
</...> <...>...</...>
</...>
<XML/>
<...>
<...>...</...> <XML/>
<...>
<...>...</...> <...>...</...>
</...> <...>...</...>
</...>
</...>
</...>

XSLT-Prozessor

EP (DocEng) | XSLT aus der Vogelperspektive | Sommer 2020 5


Profil XSLT
XSLT als deklarative Sprache für Transformationen
Typische Transformationen für Text- und Datendokumente
• Umbenennungen von Textstrukturen
• Verschieben und Duplizieren von Textstrukturen
• Generieren und Unterdrücken von Textstrukturen
• Aggregation und Gruppierung von Textstrukturen
• Arithmetische Umrechnungen (Spreadsheet-Funktion)
• Sortieren
• Auswahl von Textstrukturen (XPath)
• Filtern
Insbesondere: Transformation in XML-Dialekte
(z.B. Formatanpassungen) und Präsentationsformate (SVG, HTML, XSL-FO/PDF, WML, …)

EP (DocEng) | XSLT aus der Vogelperspektive | Sommer 2020 6


Einfache Templates und Pull-Prinzip

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>

Oft xsl:stylesheet anstatt xsl:transform


(aus historischen Gründen)

EP (DocEng) | Einfache Templates und Pull-Prinzip | Sommer 2020 2


Template
Basis-Komponente eines XSLT-Programms (Regel)
<xsl:template match = “...“>
...Zielstruktur...
</xsl:template>

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

EP (DocEng) | Einfache Templates und Pull-Prinzip | Sommer 2020 3


Template am Beispiel, Szenario Shakespeare
<xsl:template match="/">
<summary>
<play><xsl:value-of select="PLAY/TITLE"/></play>
<noSpeeches speaker="HAMLET">
<xsl:value-of
select="count(//SPEECH[SPEAKER='HAMLET'])"/>
</noSpeeches>
</summary> Vgl XML-Ausdruck mit eingebettetem
</xsl:template>
XPath, FLWOR in XQuery.
Template anwendbar auf Wurzelknoten des Quelldokuments
Wörtlicher Teil der Zielstruktur: Elemente summary, play, noSpeeches mit Attribut speaker und
Wert HAMLET
Eingabeabhängige Teile der Zielstruktur definiert durch xsl:value-of
XPath-Ausdrücke im Attribut select werden evaluiert in Bezug auf Quelldokument

• konkreter Kontextknoten ändert sich dynamisch

EP (DocEng) | Einfache Templates und Pull-Prinzip | Sommer 2020 4


XSLT-Programm nach Pull-Prinzip
Pull-Prinzip (navigierend, fill-in-the-blanks)
• ein einziges Template
• anwendbar auf Wurzelknoten des Quelldokuments (match=“/“)
• im einfachsten Fall: “Import“ oder “Pull“ von Werten aus Quelldokument mit xsl:value-of
• weitere Möglichkeiten
- bedingter Import
- iterierter Import, definiert durch XPath-Ausdrücke über Eingabedokument
- Kopieren von Strukturen
- Gruppieren, Sortieren
Typisch für à daten-orientierte Anwendungen
Beispiele
- Szenario Shakespeare: summaryHamlet.xsl, summaryRoles.xsl
- Szenario Peanuts: library2htmlPull.xsl
- Szenario Students: doublemajors.xsl (analog zu doublemajors.xql)

EP (DocEng) | Einfache Templates und Pull-Prinzip | Sommer 2020 5


Erweiterte Templates und Push-Prinzip

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

EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 2


Templates am Beispiel, Szenario Shakespeare
<!-- Start tranformation-->
<xsl:template match="/">
<xsl:apply-templates> à Delegiere an Kindelemente
</xsl:template>
<!-- Rename this element -->
<xsl:template match="PLAY">
<play>
<xsl:apply-templates/> à Delegiere an Kindelemente
</play>
</xsl:template>
<!-- Suppress this element -->
<xsl:template match="SPEECH"/> à Keine weiteren Aufrufe

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

EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 4


Push-Prinzip in Reinform
Push-Prinzip in Reinform (regel-basiert)
• Ein Template für /

• Ein Template pro Elementname


• Jedes Template schafft Ergebnis-Skelett und ruft darin an einer Stelle
xsl:apply-templates für die Kinder auf
• Unmodifizierte Übernahme von Textknoten
Beispiele
• Szenario Shakespeare: renamePlay.xsl, renameAll.xsl

EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 5


Charakteristika Push-Prinzip in Reinform
Definiert Depth-first Navigation durch Eingabedokument
Leichte Erweiterbarkeit
Ähnlichkeit von Eingabe- und Ausgabestruktur
Eignung für narrative, text-orientierte Dokumente mit unbegrenzter Tiefe

EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 8


XSLT-Programme nach Push-Prinzip
Allgemeines Push-Prinzip
• Sammlung von Templates
• Attribut select bei <xsl:apply-templates select=""> zur gezielten Steuerung der Rekursion,
über Depth-first traversal hinaus
• Mehrere Durchgänge durch ein Dokument möglich durch Verwendung von Modi bei
<xsl:apply-templates select="…" mode ="…"> zum Aufruf von
<xsl:template match="…" mode="…">

EP (DocEng) | Erweiterte Templates und Push-Prinzip | Sommer 2020 9


Prozessmodell XSLT

Anne Brüggemann-Klein
TU München
Prozessmodell am Beispiel
Auf Moodle Ordner xsltBeispieleProzessmodell
• Eingabe sampleDoc.xml
• Ausgearbeitetes Beispiel-Programm firstDemo.xsl

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 2


Prozessmodell am Beispiel
XSLT-Prozessor durchläuft sequentiell Zustände oder Konfigurationen
• Konfiguration: bisher konstruierte Ausgabe mit Arbeitsaufträgen
• Arbeitsauftrag: Pseudo-Knoten (Hexagon) mit Referenz auf Knoten im Eingabedokument (Nummer)
Initiale Konfiguration: Dokumentknoten der Ausgabe, Arbeitsauftrag für Dokumentknoten der Eingabe

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

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 4


• Auswahl des einen Arbeitsauftrags und eines passenden Templates (zweites Template passt)
• Ausführung: Übernahme von Knoten x, Bestimmung der weiteren zu bearbeitenden Knoten (2, 5),
Einfügen entsprechender Arbeitsaufträge

Eingabe / 1 Konfiguration / Folge-Konfig. /

id3 id1 rootE 2 1 x

4 a 5 b id id1 6 2 5

text b text

7 8 9

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 5


Ausführung eines Templates
Abhängig vom Inhalt des Templates
• Literal Result Element mit Attributen, wörtlicher Inhaltstext
- Übernahme in Ausgabe
• Kommando <xsl:value-of select=“...“/>
- Kopieren des ausgewählten Texts in Ausgabe
• <xsl:copy/> (einfache Knotenkopie) und <xsl:copy-of/> (tiefe Knotenkopie)
- Übernahme der Knoten und Strukturen in die Ausgabe
• Schleife <xsl:for-each/>
- iterierte Ausführung des Schleifeninhalts (Wechsel des Kontextknotens)
• Kommando <xsl:apply-templates select=“...“/>
- Bestimmen der zu selektierenden Knoten im Eingabedokument (eventuell keine vorhanden)
- Einfügen eines neuen Arbeitsauftrags pro selektierten Knoten

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 6


• Auswahl eines Arbeitsauftrags, z.B. den für Knoten 5, und eines passenden Templates
(erstes Template passt)
• Ausführung: Übernahme des Knotens in die Ausgabe

Eingabe / 1 Konfiguration / Folge-Konfig. /

id3 id1 rootE 2 x x

4 a 5 b id id1 6 2 5 2 b

text b text

7 8 9

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 7


• Auswahl des einen Arbeitsauftrags, für Knoten 2, und eines passenden Templates
(erstes Template passt)
• Ausführung: Übernahme des Knotens in die Ausgabe -> Transformation beendet

Eingabe / 1 Konfiguration / Folge-Konfig. /

id3 id1 rootE 2 x x

4 a 5 b id id1 6 2 b rootE b

text b text

7 8 9

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 8


Einige Phänomene und Missverständnisse ...
Demos in xsltBeispieleProzessmodell
XSLT hat Default-Regeln für / * text(), die immer vorhanden sind (aber überschrieben werden können)
• demo2.xsl
Nur eine Regel wird sicher aufgerufen, nämlich die für den Dokumentknoten (/). Andere Regeln
kommen nur zum Tragen, wenn Knoten mit xsl:apply-templates bestimmt werden, auf die diese Rgeln
zutreffen.
• demo0.xsl (Regel für Attributknoten) versus demo1.xsl (Attributknoten werden aufgerufen)
Die Reihenfolge der Regeln im XSLT-Programm sind irrelevant (außer für Prioritätenentscheidungen)
• Sie bestimmen NICHT den Ablauf des Programms.
• Die ausgeführten Templates bestimmen über xsl:apply-templates, welche KNOTEN als nächstes
bearbeitet werden (und damit indirekt, welche Templates zum Zuge kommen)
• demo3.xsl

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 10


... Einige Phänomene und Missverständnisse
Depth-first-Durchgang durch das Eingabe-Dokument und Anwendung von Regel für jeden Knoten ist
SPEZIALFALL (Strukturierung nach reinem Push-Prinzip)
• demo3.xsl

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 11


Aufgaben
Was macht demo4.xsl aus Eingabedokument sampleDoc4?
Bei Bedarf gehen Sie zurück zu den Beispielen aus Foliensatz d (Erweiterte Templates). Können Sie
die mit dem neuen Wissen jetzt besser nachvollziehen?

EP (DocEng) | Prozessmodell XSLT | Sommer 2020 12


Begriffe, Lernergebnisse, Kompetenzen Teil IV
Bearbeitung strukturierter Dokumente
Anne Brüggemann-Klein
TU München
Begriffe Woche 9
Datenmodell für XML Abfragesprache
XML Information Set Auswertung

Baumdiagramm Kontextknoten
XML Data Model (XDM) Navigation
Sequenz Bezug zu XQuery
Location Path Ausdruck Bezug zu XSLT

Step
Path
Achse
Knotentest
Prädikat

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 2


Lernergebnisse und praktische Kompetenzen
XDM
• Den Bezug zwischen XDM und XML Information Set bzw. Baumdiagramm beschreiben
• Die Bedeutung von XDM in Bezug auf XPath, XSLT und XQuery kennen (Abgeschlossenheit)
• Den Begriff der Sequenz erklären

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 3


Lernergebnisse und praktische Kompetenzen
XPath ...
• Den Anwendungsbereich von XPath beschreiben
• Den Zusammenhang von XPath mit XSLT und mit XQuery beschreiben
• Aufbau und Auswertung von Location-Path-Ausdrücken beschreiben
• Rolle des Kontextknotens bei Auswertung von Location-Path-Ausdrücken beschreiben
• Komponenten Step, Achse, Knotentest, Prädikat an konkreten Ausdrücken identifizieren
• Einige Achsen und ihre Abkürzungen kennen
• Die Knoten auf Achsen an einem Baumdiagramm identifizieren können

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 4


Lernergebnisse und praktische Kompetenzen
... XPath
• Verschiedene Arten von Knotentests auflisten
• Konkrete XPath-Ausdrücke gegenüber einem Kontext-Knoten auswerten
• Das Ergebnis einer Auswertung als Datum in XDM angeben
• Konvertierungsregeln von String, Sequenz, Number zu Boolean in Prädikaten anwenden

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 5


Begriffe Woche 10
Abfragesprache
SQL für Relationales Modell
XML-Ausdruck
FLWOR-Ausdruck
Klausel
Evaluierungskontext
Auswertung oder Evaluation
Join
Abgeschlossenheit
Komponierbarkeit
Vollständigkeit
Beziehung XPath, XQuery, XSLT

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 6


Lernergebnisse und praktische Kompetenzen
XQuery
• Die Bedeutung des Datenmodells XDM für XQuery beschreiben
• Das Verhältnis von XPath und XQuery beschreiben
• Den Funktionsbreich von XQuery beschreiben, auch im Vergleich zu XPath und XSLT
• Den Aufbau und die Funktionsweise von FLWOR-Queries beschreiben
• Die Auswertung von FLOWR-Ausdrücken systematisch beschreiben
• Eine Join-Operation mit XQuery nachbilden
• Konkrete XQuery-Ausdrücke auswerten
• Das Ergebnis einer Auswertung als Datum in XDM angeben

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 7


Begriffe Woche 11
Transformation (im Gegensatz zu Abfrage) Prozessmodell
XSLT-Programm (Stylesheet) Rekursion

XSLT-Prozessor Case Studies für XSLT: Formatierung


Template Case Studies für XSLT: Filterung
Literal Result Element XSLT, XQuery und text-orientierte (narrative)
Dokumente
Push-Prinzip
XSLT, XQuery und daten-orientierte Dokumente
Pull-Prinzip
Zusammenhang XSLT, XQuery, XPath und XDM
Funktionale Programmierung mit XSLT
Zusammenhang XSL, XSLT, XSL-FO
Fill-in-the-Blanks-Stil
Vergleich XSLT und XQuery
Navigierender Stil
Regel-basierter Stil

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 8


Lernergebnisse und praktische Kompetenzen
XSLT ...
• Die Bedeutung des Datenmodells XDM für XSLT beschreiben
• Das Verhältnis von XPath und XSLT beschreiben
• Den Funktionsbreich von XSLT beschreiben, auch im Vergleich zu XPath und XQuery
• Typische Anwendungen für XSLT nennen
• Beschreiben, wie mit XSLT XML-Dokumente in Präsentationsformate überführt werden
• Den Aufbau eines XSLT-Programms und die wichtigsten Sprachmittel von XSLT beschreiben:
xsl:template, xsl:value-of, xsl:apply-templates, Literal Result Elements
• Das Prozessmodell von XSLT beschreiben und am Beispiel durchführen
• Die navigierenden (output-orientierten, pull-artig organizierten), regelbasierten (push-artig
organisierten) und funktionalen XSLT-Programmierstile an Beispielen erkennen

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 9


Lernergebnisse und praktische Kompetenzen
... XSLT
• Typische Einsatzbereiche für die unterschiedlichen XSLT-Programmierstile benennen
• Das Paradigma Pipes&Filters im Zusammenhang mit XSLT darstellen
• Gemeinsamkeiten von und Unterschiede zwischen XSLT und XQuery darstellen

EP (DocEng) | Begriffe, Lernergebnisse, Kompetenzen Teil IV | Sommer 2020 10