Zusammenfassung Elektronisches Publizieren 1 Intro Besonderheiten klassischer Dokumente • • • Charakteristik: o Hoher Anteil von freiem Text (ohne Kategorisierung, semantischer Klassifizierung o Bedarf nach speziellen Tools (Gliederung Navigation, Formatierung, Volltextsuche… Erheblicher Anteil von Wissen/Information steckt frei formuliert in (traditionellen) Dokumenten und nicht formalisiert in Datenbanken (Wikipedia, wissenschaftliche Literatur, …) Uniforme Datenmodelle, Sprachen und Tools aus klassischer Dokumenten-Sicht und aus Datensicht möglich: XML und XML-Technologie (XStack) Nutzen von XML und XStack • • • • Deskriptives Markup um klassische Dokumente und Daten einheitlich zu kodieren (standardisiert durch W3C) XML (eXtensible Markup Language) setzt deskriptives Markup standardisiert um → XML als Sprache zur Kodierung klassischer Dokumente und klassischer Daten sowie aller Mischformen → XStack als Technologie zur Bearbeitung von XML-kodierten Dokumenten (lokal und im Web) Leistungen von XML: o Kodierung von Dokumenten in XML o Modellierung von XML Schema und anderen XML-basierten Schemasprachen o Speicherung in XML-Datenbanken (verteilt möglich) Leistungen des XStack: o Aus Rohdaten generierte Visualisierung/Darstellung in Web-Browsern o Bearbeitung mit XML-Technologie 2 Modellierung und Kodierung strukturierter Dokumente 2.1 Einordnung Begriffe & Erklärungen im Zusammenhang mit XML • • • • Document Engineering: Prinzipien und Praktiken zum Umgang mit Dokumenten, die gewisse Qualitätskriterien sicherstellen Freier Text/Fließtext: Textbestandteile, die keine eigene Kategorisierung oder semantische Klassifizierung haben (text-orientierte Dokumente), stehen im Zentrum des Document Engineering XML als Sprache: Kodierung klassischer text-orientierter und daten-orientierter Dokumente möglich Eingebettetes Markup: Textbereiche werden mit den in den Text eingestreuten Anfangs- und Endmarkierungen kategorisiert oder semantisch mittels Namen (-> Deskriptives Markup) markiert 1 • Standardisierung/Plattformunabhängigkeit: XML und XStack ist standardisiert und plattformunabhängig implementiert 2.2 Modell der strukturierten Dokumente und deskriptives Markup Dokument Engineering aus zwei Domänen • • Einfluss Publikationssysteme / technische Dokumentation: o Anforderungen Flexibilität: Zugriffsmöglichkeiten, Verfügbarkeit, Single-Source Publishing, Datenanalyse, Datenverarbeitung o Strukturierte Dokumente als Ergebnis der Transformation von Struktur-Armut zu reichhaltiger Struktur Einfluss Datenbanksysteme: o Anforderungen Flexibilität: Auflösung der Schema-Bindung o Von strenger Strukturierung zu weicherer Strukturierung: semistrukturierte Daten Konzeptionelle/philosophische Sicht auf ein Dokument • • Artefakt mit folgenden Charakteristika: o Beliebiges Material (physisch/elektronisch, analog/digital, …) o Hält und reproduziert (sprachliche) Information o Lebenszyklus: unabhängig von Zeit und Ort ▪ Transportabel ▪ Dauerhaft Im Document Engineering: Modell der strukturierten Dokumente o Ursprünglich: Direkte Formatierung (z.B. kursiv) im Dokument o Modell der strukturierten Dokumente: ▪ Markierung mit dem Grund direkt im Text (deskriptiv, logische Struktur) ▪ Tabelle mit Vorschriften zur Umsetzung der Markierungen (Stylesheet) ▪ Kombination von logischer Struktur und Stylesheet: Software für Präsentation/Format o Vorteile: ▪ Flexibilität ▪ Stabilität bei Veränderungen ▪ Konsistenz innerhalb eines Dokuments (nur 1 Regel je logischer Einheit im Stylesheet) ▪ Konsistenz über Dokumente hinweg (1 Stylesheet für verschiedene Dokumente ▪ Single Source (alternative Stylesheets für ein Dokument) ▪ Verarbeitbarkeit Modell der strukturierten Dokumente • • • • • Prinzip: Trennung von Daten und Verwendungszwecken (wie Präsentation) Ansatz: Ersetze im Dokument alle Information, die mit Verwendungszweck zu tun hat o deskriptiv durch den inhaltlichen (semantischen) Kern dieser Information und o durch (separierbare, wiederverwendbare) Vorschriften zu ihrer Bearbeitung Besteht aus zwei Komponenten: o (Text-) Inhalt, Inhaltstext o Annotation / Markierung von Textbereichen mit semantisch bedeutsamer (deskriptiver) Metainformation: (logische) Struktur Kombinierbar mit separater, auswechselbarer Formatvorlage (Stylesheet) Kombinierbar mit weiteren separaten, auswechselbaren und ausführbaren Bearbeitungsvorschriften für Verarbeitung bis hin zu semantischer Interpretation 2 Umsetzung mit deskriptivem Markup Anreichern von Fließtext / Rohdaten mit Markierungen für die Rolle / Bedeutung / Semantik • Text-basiertes Format, mit eingebetteten Markierungen (Markup) • Markierungen deskriptiv (mit Bedeutung) • Selbstbeschreibung durch eingebettete Markierungen • Freie, nicht durch Schema vorgegebene Strukturierung • Integration von feien Textinhalten • Trennen von Daten und Erscheinungsform / Verwendung • Formatierte Darstellung durch Stylesheets 2.3 Deskriptives Markup für strukturierte Dokumente mit XML eXtensible Markup Language (XML) • • • W3C recommedation Dokumentenformat des W3C für Webdokumente Markupsprache zur Kodierung von strukturierten Dokumenten mit eingebettetem, deskriptivem Markup Elemente, Attribute und Text • • • Elemente: o benannt, Inhalte von Elementen und Text hierarchisch strukturiert o Kodierung: Paare von öffnenden und schließenden Markierungen (Tags): <name></name> Attribute: o Name-Werte-Paare als Attribution zu Elementen o Kodierung: innerhalb von öffnenden Tags für Elemente: erstelltAm = „2017-01-01“ Text: o Folge von Unicode-Zeichen o Speicherung im Uncode Kodierungsformat (standardmäßig UTF-8): <?xml version=“1.0“ encoding=“UTF-8 ?> Umsetzung Modell der strukturierten Dokumente • • • • • • Umsetzung der Komponenten des Modells in XML: o Inhalt: Text o Struktur: ▪ Elemente ▪ Attribute Freie Verwendung von Namen für Elemente und Attribute → deskriptiv Freie Textfragmente ohne explizite Markierung erlaubt → text-orientierte Dokumente Freie Textfragmente optional → daten-orientierte Dokumente Flexible hierarchische Strukturierung beliebiger Breite und Tiefe Kodierung mit eingebettetem Markup Rolle von Elementen und Attributen in XML • Elemente als Haupt-Strukturierungsmechanismus o Bestimmen die hierarchische, baumartige Struktur o Können Unterelemente und Textinhalt enthalten: Container für Information o Können durch Attribute weiter qualifiziert werden o Können durch Attribute verlinkt werden 3 Syntax, Wohlgeformtheit von XML-Dokumenten • • XML-Dokumente müssen bestimmte syntaktische Regeln einhalten o Öffnendes und schließendes Tag (Ausnahme Leer-Elemente-Tag: <abc/>) o Namen von Attributen innerhalb von Elementen müssen eindeutig sein Die durch die Regeln bestimmte Wohlgeformtheit wird von Parsern (XMLProzessoren) überprüft XML-Parser • • • Kernfunktionalität: Ja/Nein-Check der Syntax (Überprüfung der Wohlgeformtheit) Abstraktion von syntaktischem Zucker Zusätzlich Funktionalitäten: o Pretty Printing, Syntax Highlighting o API für Anwendungen o Auswertung von DTD 2.4 Alternativen für Markup und Strukturierungen • • • Word o o LaTeX o JSON o Markup deskriptiv, aber nicht eingebettet Datenmodell nicht zugänglich Deskriptives Markup nur bei oberflächlicher Betrachtung Deskriptives Markup für Daten Strukturierungsmechanismen in anderem Kontext • • Datenbanken: Tabellen OO-Programmierung: Klassen, Objekte 2.5 XML Namespaces Warum XML Namespaces? • • Konfliktpotential bei der Kombination von XML Vokabularien Schaffung separater Namensbereiche durch Namensräume Benennung von Namensräumen mit URLs • • • Kombination von einfachen Namen mit URL als Namensraum-Namen zur eindeutigen Identifizierung Namensraum-Namen/URLs sind nur Symbole o URLs müssen nicht auf echte Ressourcen zeigen o Domänen müssen nicht registriert sein o Gleichheit als Zeichenkette zählt (Groß- und Kleinschreibung wird unterschieden) Beispiele für standardisierte Namensräume: o DocBook http://docbook.org/ns/docbook o XLink http://www.w3.org/1999/xlink o XSLT http://www.w3.org/1999/XSL/Transform Zuordnung von URLs zu Namen • Indirekte Zuordnung von Namen zu URLs über Präfixe 4 • Beispiel: Aspekte der Kodierung: Name und Scope • • Name o Erweiterter Name: Namensraum-Name + lokaler Name o Qualifizierter Name: Präfix + lokaler Name (Präfix kann leer sein) Gültigkeitsbereich (Scope) der Präfixdefinition o Innerhalb des Elements, in dem das Präfix definiert ist (einschließlich des Elements selbst) o Überschreiben der Definition innerhalb der Elementhierarchie möglich Default-Namensraum • • Definition von leerem Präfix Alle Elemente ohne Präfix innerhalb des Scopes gehören automatisch zum DefaultNamensraums • Definieren eines Default-Namensraums (lokaler Default): o Mittels Attribute xmlns o Überschreiben der Definition innerhalb der Elementhierarchie möglich o Zurücksetzen auf anonymen Namensraum möglich über xmlns=““ Verwendung: o Für Vokabular-Inseln o Für das Haupt-Vokabular • 5 Anonymer oder universeller Namensraum • Leeres Präfix ohne Definition: Anonymer oder universeller Namensraum • Jedes Element ist in einem Namenraum, im Zweifelsfall im anonymen/universellen Namensraum Attribute und Namensräume • • Lokale Attribute: Gehören zu einem Element, das in einem Namensraum steht (indirekte Namensraum-Zugehörigkeit) o Attribut gehört zu dem Element, an dem es steht und das Element gehört zu einem Namensraum Globale Attribute: Gehören zu einem eigenen Namensraum (direkte NamensraumZugehörigkeit) o Attribute mit Präfix o Gehören zu einem eigenen Namensraum, unabhängig von dem Namensraum des Elements, an dem es steht o z.B. XLink-Attribute 2.6 XML Information Set und Baumdiagramme Modelle für XML-Dokumente • • Modelle bieten Abstraktion o Weg von konkreter Syntax und deren Mehrdeutigkeiten (syntaktischer Zucker) o Hin zu den wesentlichen Komponenten: Elemente, Attribute, Text und ihre Beziehungen → Konzeptuelle Sicht auf ein XML-Dokument Wozu dient ein Modell für XML-Dokumente? o Macht Konzepte klarer → Kommunikation o Reduziert auf das Wesentliche → gut für Definition weiterer Sprachen wie XQuery o Grundlage für die Definition von APIs → vgl. Abstrakte Datentypen in der Informatik Konzeptuelle Sicht auf ein XML-Dokument Was soll ein Modell für XML-Dokumente abbilden? • Struktur von Knoten verschiedenen Typs (Elementknoten, Attributknoten, Textknoten) • Hierarchie von Elementknoten und Textknoten • Attributknoten (mit Namen und Werten) assoziiert zu Elementknoten 6 Baummodell • • • • • • • Hierarchische Struktur von Elementen und Textinhalten → Baumstruktur Wurzelknoten/Dokumentknoten → Ovaler Knoten mit „/“ markiert Element → ovaler Knoten, Name in Knoten Text → eckiger Knoten, Textinhalt in Knoten in Anführungszeichen Attribute → Eintrag in Tabelle am Element (zwei Spalten: Name und Wert) Namen im anonymen Namensraum: ohne spezielle Markierung Namen in benanntem Namensraum: {URI} Name XML Information Set • Definiert ein Datenmodell für XML-Dokumente in Form von Komponenten (Information Items / Knoten) mit Attributen für nähere Beschreibung der Komponenten selbst und der Beziehungen o „natürliches Infoset“: wird konstruiert aus wohlgeformten XML-Dokument nach Parsen o „künstliches Infoset“: wird direkt konstruiert oder entsteht als Ergebnis einer Bearbeitung 7 • Aufbau eines Information sets: 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 Baumdiagramme definieren graphische Notation für die Komponenten eines konkreten XML-Dokuments und ihre Beziehungen 2.7 XDM Abgrenzung zum XML Information Set / Baumdiagramm • • • XML Information Set / Baudiagramme: modellieren ganze XML-Dokumente Bei Queries können Fragmente aus mehreren XML-Dokumenten vorkommen → Abgeschlossenheit des Datenmodells ist nicht gegeben XDM erweitert XML Information Set um solche Fragmente → Abgeschlossenes Datenmodell für XPath, XQuery und XSLT Datenmodell XDM • • Beinhaltet: o Konzeptuelle Sicht auf XML-Dokumente als Bäume von Knoten o Konzeptuelle Sicht auf Daten als Sequenz von skalaren Daten und (Referenzen auf) Knoten Datum ist immer flache Sequenz von o Einfachen Daten vom Typ number, string, boolean, … o Referenzen auf Komponenten / Bestandteile eines XML-Dokuments: Knoten / Information Items im Sinne von XML Information Set 2.8 Zeichenkodierung für XML-Dokumente: Unicode Grundlegendes • • • Universeller Zeichensatz, der alle Schriften der Welt umfassen soll: Universal Character Set (UCS) Zeichentabelle/Codetabelle, die jedem Zeichen in UCS eine Position (Code Point) zuordnet Positionen als Hex-Ziffern angeben, Zeichen in zweidimensionaler Matrix arrangiert 8 • • National standardisierte Zeichensätze vollständig abgedeckt Erlaubt simultane Verwendung verschiedener (nationaler) Zeichensätze in einem Dokument Organisation der Unicode-Zeichentabelle Ebene 0 • • • • • • Basic Multilangual Plane (BMP) bestehen aus den ersten 216 Zeichen Strukturierung der Ebene in einzelne Kacheln Beispiel: Kachel für ISO-Latin-1 o Jeder Code Point angegeben durch zwei Hex-Ziffern o → 16 x 16 = 256 Code Points für Zeichen aus dem Alphabet Kacheln wieder in 16 x 16 Matrix arrangiert, die wieder über 2 Hex-Ziffern adressierbar sind Code Point eines Zeichens in der Matrix durch 4 Hex-Ziffern ausgedrückt → zwei für die Kachel und zwei für die Position innerhalb der Kachel Insgesamt 17 Ebenen (davon Ebene 0 BMP) Unicode und XML • • • • • • • Unicode ist Zeichentabelle für XML o XML-Standard definiert XML-Dokument auf unterster Ebene als Strom von Unicode Zeichenpositionen oder Code Points o Unicode-Zeichen können über Zeichen-Referenzen spezifiziert werden (z.B. &#169; und &#xA9; spezifizieren Copyright Symbol über Code Point [in dezimal bzw. hex]) Speicherform macht jedoch Gebrauch von Unicode Kodierungsformaten (Standard: UTF-8) → Parser liest Daten in Kodierungsformat und generiert eine Sequenz von Code Points XML Software muss wenigstens UTF-8 und UCS-2 (Dualzahlkodierung mit 4 Bytes) verstehen Jede XML Text entity muss eine Kodierung deklarieren Default ist UTF8 Angabe alternativer Kodierungen: <?XML encoding="«encoding description»" ?> Beispiele für encoding description: o UTF-8 o UTF-16 o Verschieden ISO-standards Kodierungstabelle vs. Kodierungsformat • • • • Position in UCS-Kodierungstabelle ist eine Zahl ausgedrückt als Hex-Ziffer Position kann unterschiedlich in Bits und Bytes kodiert werden → Kodierungsformat Es gibt mehrere Kodierungsformate für Unicode Einfache Kodierungsform: UCS-2 und UCS-4 o Dualzahlkodierung mit 16 bzw. 32 Bit o UCS-2 kodiert nur Zeichen in BMP Kodierungsformat UTF16 • • • Stellt jede Position im Bereich 0 bis FFFF kanonisch durch Doppel-Byte dar (UCS2Transparenz) Stellt Positionen im Bereich 10000 bis 10FFFF (20 Bits) mit Hilfe zweier Surrogatpositionen dar Kodewort nach UTF-16 ist 9 o o Ein Doppel-Byte (keine Surrogatpositionen), die Positionen gemäß Dualzahlkodierung kodiert Ein Paar von Doppel-Bytes (beide sind Surrogatpositionen), die Position über zusammen 20 Suffix-Positionen kodiert Kodierungsformat UTF8 • • • • • • • Kodiert Positionen im Bereich o Bis FFFF mit 1 bis 3 Bytes (deckt BMP ab) o Bis 10FFFF mit 1 bis 4 Bytes (deckt Unicode ab) o 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 Die Anzahl der auf 1 gesetzten Bits im 1. Block gibt die Anzahl an Blöcken an (inklusive dem 1. Block) → Ausnahme: bei nur einem Block beginnt dieser direkt mit 0 Nach den 1en im ersten Block folgt eine Null Jeder weitere Block beginnt mit 10 Schema: o 7-Bit für Kodierung bei einer Einheit, 11 Bei zwei Einheiten usw. Kodierung von XML • • • • Zeichenstrom: o XML-Sicht: Sequenz von Unicode-Zeichen o Speichersicht: Sequenz von Bytes, Kodierungsformat Markup: o Repräsentiert Nicht-Inhalt (Metainformationen) o Eingebettet in Inhaltstext o Durch syntaktische Konventionen von Inhaltstext unterschieden Tag: o Spezielles Markup o Repräsentiert XML-Element mit öffnendem und schließendem Tag o Repräsentiert XML-Attribute in öffnendem Tag Unterscheidung zwischen Kodierung und Darstellung (Sicht) 10 3 Schemasprachen für strukturierte Dokumente Was sind Schemasprachen für strukturierte Dokumente? • • Möglichkeit, das Vokabular der Strukturelemente für Anwendungsbereich zu spezialisieren In einem Schema / einer Strukturvorgabe, die in der Schemasprache geschrieben ist Nutzen einer Schemasprache • • • • • Kommunikation: Eingrenzen der Freiheit des Vokabulars in einer Community / Domäne Entwicklung spezieller Werkzeuge, z.B. DocBook Überprüfung / Validierung von Vereinbarungen Syntaxgestützte Eingabeunterstützung Kenntnis der möglichen Strukturen kann Verarbeitung erleichtern Schemasprachen und XML • • Definieren der erlaubten Strukturen für eine Klasse von Dokumenten (Instanzen) mit formalen Mitteln Gegengewicht zur Freiheit des Vokabulars in XMLs o Festlegen von: ▪ Vorrat an Strukturelementen und Attributen ▪ Vorschriften zu ihrer Kombination, auch in Bezug auf Text ▪ Definition von Integritätsbedingungen Vorgabe vs. Instanzen • • • • Schemasprachen definieren Vorgaben Eindeutigkeitsanforderungen an Indexterme zur Identifizierung von Objekten (Schlüssel) Integritätsforderung an Indexterme zur Referenzierung von Objekten (Fremdschlüssel) → systemgestützte Sicherstellung der referentiellen Integrität Instanzen einer Vorgabe sind XML-Dokumente Identity Constraints für XML-Daten • • Übertragung der Idee von Schüssel/Fremdschlüssel auf hierarchisch strukturierte Daten Z.B. über Datentypen xs:ID und xs:IDREF in XML Schema 3.1 XML Document Type Definition (DTD) Grundsätzliches • • Vokabular für Elementnamen und Attributnamen Beziehungen von Elementen und Attributen einschließlich Identity Constraints werden formal festgelegt mit Hilfe von o Elementdeklarationen (Inhaltsmodellen) o Attributdeklarationen Konzepte • Inhaltsmodell (Content Model) definiert erlaubte Unterstrukturen (Elemente, Text) für deklariertes Element o Operatoren: , | + * ? () o Element Content: nur Elemente erlaubt o Mixed Content: Text und Elemente erlaubt (#PCDATA | el1 | el2 | …)* o Text Content: nur Text (#PCDATA)* 11 • • Deklaration von Element- und Attributnamen und o Wertebereich / Typ o Default-Wert (optional) o Default-Regelung Identity Constraints werden durch Typen ID und IDREF beschrieben Syntax • • Deklaration von Elementen: <!ELEMENT Name ContentModel> o Content Model: ▪ Element Content: EMPTY, ANY, kombinierte Ausdrücke mit Operatoren ▪ Mixed Content: (#PCDATA), (#PCDATA | N1 | ... | Nx)* Deklaration von Attributen: <!ATTLIST Name N1 W1 D1 … Nx Wx Dx> o Name := Elementname o N := Attributname o W := Wertebereich (CDATA, ID, IDREF, (v1, …, vn), ENTITY) o D := Defaultregel (#REQUIRED, #IMPLIED, v, #FIXED v) Diskussion • • • • DTD definiert Menge von konformen Dokumenten (Instanzen) Beispiel: XHTML DTD macht XML zu Metasprache für Markup-Sprachen Zusätzliche Validität zur Wohlgeformtheit durch DTD Doppelfunktion von DTDs • • • Strukturvorgabe o Festlegung eines Vokabulars von Element- und Attributnamen und ihren Verwendungsweisen o Regeln für Aufbau der logischen Struktur von XML-Dokumenten mit Elementen und Attributen (Instanzen) Festlegung der KomponenRten eines XML-Dokuments, aus denen es physisch zusammengesetzt ist (physische Struktur) → Entities Anmerkung: logische Struktur definiert Struktur innerhalb von XML Dokumenten durch Elemente und Attribute, die physische Struktur deren Komposition 3.1.1 XML Entities Grundlagen • • • • • XML Dokumente sind physisch in Entities organisiert (Entitiy als Speichereinheit) Gesamtes Dokument bildet eine Entity Inkludiert untergeordnete Entities durch Entity-Referenz (z.B. &auml;) Entities werden in der DTD definiert Entities als Makro-Mechanismus Einsatzzweck von Entities • • Modularisierung o Aufteilen großer Dokumente, z.B. Buch in Kapitel o Abgestufter Gültigkeitsbereich o Explizite Benennung, Redundanzvermeidung Anpassbarkeit o Überschreiben von Definitionen in DTDs 12 • • Wiederverwendbarkeit o Abkürzungen o Teildokumente Plattformunabhängigkeit Arten von Entities • • Ersetzungstext kann intern (innerhalb der Definition der Entity) oder extern (z.B. über Dateiname einer Ressource) definiert werden Typen von Entities: o General Entity: Expansion in Instanz (in DTD definiert, in Instanz verwendet) o Parameter Entity: Expansion in DTD (in DTD definiert, in DTD verwendet) Syntax • • Generelle Entities: o Intern: <!ENTITY AHK 'Alles für Hund und Katze'> o Extern: <!ENTITY AHK SYSTEM 'ahk.ent'> o Verwendung: &AHK; Parameter Entities: o Intern: <!ENTITY % text ´(#PCDATA | emph)*´> o Extern: <!ENTITY % text SYSTEM 'text.dtd'> o Verwendung: <!ELEMENT para %text;> 3.1.2 Typen in XML DTD • • • • Strukturtypen implizit durch Kombination von Element- und Attribut-Deklaration (anonym, nicht referenzierbar) Datentypen sind vordefiniert und nicht erweiterbar o Datentypen für Textinhalt von Elementen: #PCDATA o Datentypen von Attributen: CDATA, ID, IDREF, ENTITY, ENTITIES, … Nur eine Typdefinition pro Elementname Deklaration nur unabhängig vom Kontext möglich (es gilt das Substitutionsprinzip für Dokumente, die zu einer gemeinsamen DTD gehören) 3.2 XML Schema Grundsätzliches • • • Standardisiert von W3C Mächtigere Alternative zu DTDs o Strukturierungsmöglichkeiten o Datentypen o Abbildbarkeit von Modellierungen (Vererbungskonzepte) DTDs können mit Hilfe globaler Elementdeklarationen vollständig auf XML Schema abgebildet werden (entsprich Salami Slice pattern) Mächtigkeit durch lokale Elementdeklaration • • • • DTD: nur globale Elementdeklaration möglich (→ Substitutionseigenschaft) Reichhaltigere Strukturbeschreibungen, größere Mächtigkeit von XML Schema durch lokale Elementdeklarationen Elementnamen und Elementtypen werden durch lokale Elementdeklarationen entkoppelt → Mächtiger als DTDs durch lokale Elementdeklarationen 13 3.2.1 Typen, Datentypen und Strukturtypen Typ • • • • • Menge von Werten (z.B. Typ der ganzen Zahlen) Zu Typen gehören: o Definition der zugehörigen Werte o Repräsentation der zugehörigen Werte o Gleichheitsregeln o Methoden (z.B. Addition, Größenvergleich) Typen in Schemasprachen: Datentypen und Strukturtypen Typen sind unabhängig von Namen des Elements oder Attributs, dem sie zugeordnet sind Zuordnung von Typen zu Elementnamen bzw. Attributnamen erfolgt bei der Element/Attributdeklaration Datentyp (in XML Schema: Simple Type) • • • • Werte sind Zeichenketten: Strings mit bestimmten Bildungsgesetzen und Gleichheitsregelungen Anwendbar auf: o Attribute o Reinen Textinhalt von Elementen, die Attribute tragen o Reine Textelemente (Elemente ohne Attribute und ohne Unterelemente) Beispiele: o Datentyp date mit Wert „2015-02-28“ o Datentyp decimal mit (identischen) Werten „7“ und „007“ XML Schema besitzt ca. 50 vordefinierte Datentypen o xs:string o xs:date o xs:integer o … Strukturtyp (in XML Schema: Complex Type) • • • • • Werte sind o Sequenzen von Unterelementen (bestimmten Typs), evtl. Durchmischt mit Text oder reiner Inhaltstext o Kombiniert mit Attributen Spezialfall: Kein Inhalt, nur Attribute Anwendbar auf Elemente Analogien: o Klassen, Record-Strukturen in Programmiersprachen o Tabellen mit Festlegungen von Namen, Attributen, Constraints in Datenbanksystemen Strukturtypen benutzen Datentypen für Attributwerte und reinen Textinhalt 14 Exkurs: Definition von Inhaltsmodellen 3.2.2 Syntax • Elemente global, Attribute lokal • Typ global • Element lokal 3.2.3 Entwurfsmuster für Schemas / Strukturvogaben • Mögliche Kombinationen o Elementdeklaration: ▪ Lokal (innerhalb von Typdefinition, nicht referenzierbar) ▪ Global (auf oberster Schema-Ebene, referenzierbar) 15 o Typdefinitionen ▪ Lokal (innerhalb von Elementdeklaration, nicht referenzierbar) ▪ Global (auf oberster Schema-Ebene, referenzierbar) 3.2.4 Selbst-definierte Datentypen Konstruktoren Erlauben das ableiten von Nutzerdefinierten Datentypen aus bereits definierten Datentypen • Restriktion: o Ableitung aus Basis-Typ o Entlang von typspezifischen Facetten o „nützlichste Facette“: Pattern • Listenbildung • Vereinigung Facetten Arten von Facetten • xs:enumerate • 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 Pattern Facette • • • Syntax: <xs:pattern value=“\d{3}-[A-Z]{2}“/> Muster (regulärer Ausdruck) im Attribut „value“ beschreibt Zeichenkette Funktionssymbole: . \ ? * + { } ( ) [ ] 16 • • Atomare Muster (Zeichenkette der Länge 1): o Zeichen, die keine Funktionssymbole sind o Spezielle Zeichen: \n \t \\ … o Wildcard Zeichen . o Zeichenklassen: \s (Spaces) \d (Digits) \w (Word Characters) … o Unicode Character classes/Blocks: ▪ \p{Cc} für Kontrollzeichen ▪ \p{Cc} für Nicht-Kontrollzeichen o Nutzer-definierte Zeichenklassen [a-z] [^a-z] [-^\\] [\-\^\\] [-+] [+-] [\^] [\d\p{cC}] [\p{isBasicLatin}-[\P{L}]] Quantifizierer (nach Atomen und Gruppen) o * + ? {n} {n,m} {n,} o Vereinigungsoperator | o Sequenzoperator (ohne Zeichen) o Gruppenbildung mit Klammern () Konstruktor Restriktion • • Definition neuer einfacher Typen durch Restriktion eines Basistypes über Werte für Facetten Syntax: Definition des Basistyps über Attribut base oder locale Typdefinition, eingebettet in xs:restriction: <xs:simpleType name="…"> <xs:restriction base="…"> <xs:pattern value="…"/> <xs:maxExclusive value="…"/> <xs:enumeration value="…"/> <xs:enumeration value="…"/> </> </> Konstruktor Liste 17 Konstruktor Vereinigung 4 Bearbeitung von Strukturierten Dokumenten 4.1 XPath Grundsätzliches • • • • • Hauptfunktion: Adressierung von Teilen von XML-Dokumenten durch Navigation durch die hierarchische Struktur (Nebenfunktion: Berechnungen allgemeiner Art) „Mini-Query-Sprache“ Teilsprache von XQuery Verwendet in XSLT, XLink, XForms, XML Schema, Schematron Basiert auf XDM zur Beschreibung von Eingaben, Zwischenwerten, Ergebnissen Beziehungen von Knoten zu Knoten • • • • • • Eltern-Beziehung (parent) o Von Element-/Textknoten zu Element-/Wurzelknoten in der übergeordneten Hierarchiestufe o Von Attributknoten zu Elementknoten, zu dem das Attribut gehört Kind-Beziehung (child) o Von Element-/Wurzelknoten zu Element-/Textknoten in der untergeordneten Hierarchiestufe Attribut-Beziehung (attribute) o Von Elementknoten zu zum Element zugehörigen Attributknoten Vorfahre (ancestor) Nachfahre (descendant) Identität (self) Achsen in XPath • • • Beziehungen heißen in XPath Achsen → bestimmen die Richtung, in die navigiert wird Achsen in XPath: o parent, ancestor, ancestor-or-self o child, descendant, descendant-or-self o attribute o self o preceding, preceding-sibling, following, following-sibling Achsen werden relative zu Kontextknoten (beliebigem Ausgangsknoten) interpretiert 18 Location Path-Ausdrücke in XPath - Schritte • • • Syntax für Step (oder Schritt): Achse :: Knotentest [Prädikat] [Prädikat] … o Achse kann sein: child (default), parent, descendant, self, attribute (@) … o Kontentest kann sein: Name, beliebiger Name (*), Typ (text(), node()) o Kombination aus Achse und Knotentest: self.node() (.), parent::node() (..) Auswertung/Evaluation eines Steps ausgehend von einem Kontextknoten: o Bestimmt eine Sequenz von Knoten über die Achse o Selektiert daraus die Knoten, die den Knotentest bestehen o Selektiert daraus für jedes Prädikat nacheinander die Knoten, die die Prädikate erfüllen → Sequenz von Knoten gemäß XDM als Ergebnis Beispiele: Location Path-Ausdrücke in XPath – Pfade • • • • Ein Pfad ist zusammengesetzt aus mehreren Schritten Syntax: o Relativer Pfad: Step / Step / …(Evaluierung beginnt beim Kontextknoten) o Absoluter Pfad: / Step / Step / … (Evaluierung beginnt beim Wurzelknoten) Auswertung: o Falls absoluter Location Path Ausdruck: Wurzelknoten / Document Node wird Kontextknoten o Für ersten Schritt im Pfadausdruck Auswertung von Kontextknoten ausgehen, führt zu Knotensequenz als Ergebnis o 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 ▪ Hänge die Teilergebnisse zu einer großen Sequenz zusammen Beispiele: Abkürzungen • • • • • // für /descendant-or-self::node()/ (identisch zu .//) . für self:node() .. parent::node() <nichts> für child:: @ für attribute:: Weitere Arten von Ausdrücken • • Vergleiche: >, <, = (mit Booleschem Ergebnistyp) Verknüpfung von Sequenzen mit | (oder) 19 Funktionen • • • • • count(sequence) sum(sequence) avg(sequence) distinct-values(sequence) Quantoren: o Existenzquantor: some $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4 o Allquantor: every $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4 Konvertierungsregeln in Prädikaten • • Prädikate evaluieren immer zu Boolschen Werten (Filterfunktion für Knotenkandidaten) Automatische Konvertierung, wenn das Prädikat einen anderen Typen hat o Zahl wird als Position interpretiert: [position() = 1] entspricht [1] o Nicht-leere Sequenz wird als wahr interpretiert, z.B. sind äquivalent: ▪ //book [count(.//review) > 0] ▪ //book [.//review] o Leere Sequenz wird als falsch interpretiert, z.B. sind äquivalent: ▪ //book [count(.//review) = 0] ▪ //book [not(.//review)] o Ähnlich: leerer String → falsch, nicht-leerer String → wahr Review • • • • • • Sprache von Ausdrücken, mit denen Fragmente von XML-Dokumenten lokalisiert werden können (Mini-Query-Sprache) Schrittweises Navigieren durch Dokumentenbaum ausgehend von Kontextknoten Abgeschlossenheit bzgl. Datenmodel Komponierbarkeit bzgl. Ausdruckssprache Lokalisierung durch Navigation in Dokumentenstruktur XPath ist Teilsprache von XQuery 4.2 Xquery Grundsätzliches • • • • • • • • • Abfragesprache für XML-Daten, vergleichbar mit SQL für relationale Daten XML verallgemeinert Relationen → XQuery verallgemeinert SQL Verwendet XPath als Teilsprache und als Komponente XPath kann nur selektieren, aber nichts neu berechnen Möglichkeiten mit XQuery o Neu anordnen / sortieren o Neu gruppieren / Container generieren o Strukturen ändern / neue Strukturen erzeugen o Beziehungen zwischen Teilen von Daten auswerten (klassisch in Datenbanken: Joins) o Daten ändern (Updates mit XQuery Update Facility) Datenmodell XDM als Basis Eingabe, Zwischenergebnisse und Ergebnis einer Query: Sequenz von Knoten Berechenbarkeitsuniversell XQuery is Read-only → Erst durch Update Facility bearbeiten von XML-Daten möglich 20 Prolog und XML-Ausdrücke • Zu Beginn eines XQuery files werden Version und Kontext definiert: • Template-Syntax erlaubt eingebettete Queries: o Innerhalb einer Query ist XML-Element mit Inhalt möglich o Innerhalb von XML Wechsel in XQuery-Syntax mit {} o Beispiel: FLWOR-Ausdruck • • Enthält Klauseln For, Let, Where, Order by, Return Beispiel: • • • • 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 XQuery Update Facility • • • • • • Unterstützt lokale Änderungen von XML-Daten am Platz Update-Primitive: o delete node location o insert node items ▪ into location ▪ as first into location | as last into location ▪ before location | after location o replace node location with items o rename node location as expression mehrere Update-Primitive, getrennt durch Komma, möglich (z.B. in Return-Klausel eines FLWOR-Ausdrucks Verwendung in Funktionen: Markierung mit %updating, Verwendung in Return-Klauseln Ergebnis eines Update-Ausdrucks: Liste von Pending Updates → Ausführung am Ende der Query in beliebiger Reihenfolge 21 XQuery Fulltext Operationen und Ergänzungen in Klauseln zur Unterstützung von Volltextsuche (Wortstämme, Nähe von Vorkommen, Ranking, …) im Scope von Strukturen 4.3 XSLT Grundsätzliches • • • • • • • XQuery dient der Abfrage von Dokumentenbeständen XSLT der Transformation von Dokumenten in andere Formate ( → Single-Source Publishing) Beispiele für Zielsprachen: XML, HTML, Text, … Grundlage zur Navigation innerhalb von XML Dokumenten ist XPath XDM ist das grundlegende Datenmodell XSLT-Sprache: o Deklarativ, berechenbarkeitsuniversell o Mit XQuery das SQL für XML: XQuery als Abfragesprache, XSLT für die Komposition von Ergebnissen und Aufbereitung text-orientierte Dokumente ▪ Cross-Media- und Multi-Channel-Fähigkeit ▪ Unterstützung von Single-Source Publishing o XML-Syntax XSLT-Prozessor o Interpreter o Arbeitet auf Datenmodell XSLT Template • • Basiskomponente eines XSLT-Programms o Vergleichbar mit Prozedur o Vergleichbar mit Return-Statement in FLWOR-Ausdruck von XQeury Blaupause / Stempel für Ergebnis einer Teil-Transformation o Gegeben als XML-Struktur o Import von Inhalten aus Quelldokumenten über XPath-Ausdrücke Befehle in XSLT Templates • • • Wörtliche Daten o Text (alternativ mit xsl:text) o Literal result elements, auch mit Attributen Kommandos für eingabeabhängige und berechnete Daten o xsl:value-of mit Attribut select (XPath-Ausdruck) o xsl:copy-of mit Attribut select (XPath-Ausdruck) o Konstruktion von Elementen und Attributen: xsl:element mit Attribut name (XPath-Template) xsl:attribute mit Attribut name (XPath-Template) Kommandos zur Ablaufsteuerung o xsl:if mit Attribut test (XPath-Ausdruck) o xsl:choose mit Kinderlementen xsl:when und xsl:otherwise o Schleife: ▪ xsl:for-each mit Attribut select (XPath-Ausdruck) ▪ xsl:for-each-group 22 Pull-Prinzip (navigierend, fill-in-the-blanks) • • • • • • XSLT-Programm besteht aus einem einzigen Template Anwendbar auf Wurzelknoten des Quelldokuments (match=“/“) Zielstruktur wird statisch zusammengesetzt, mit Bausteinen aus Quelldokument Mittel: xsl:value-of und prozedurale Anweisungen Typisch für daten-orientierte Anwendungen Beispiel: Push-Prinzip (regel-basiert, input-orientiert) • • • • • • Transformationsprogramm als Sammlung von Templates (z.B. pro Element) mit Ergebnis-Skelett) „Freistellen“ im Ergebnis-Skelett füllbar durch rekursiven Aufruf weiterer Templates, gezielt für weitere Elemente relativ zum gerade bearbeiteten Kontextknoten Aufruf eines Templates durch xsl:apply-templates o Angabe welche Elemente bearbeitet werden o Suche nach passendem Template für jedes Element Vorgehen: o Ein Template für / o Ein Template pro Elementname o Jedes Template schafft Ergebnis-Skelett und ruft darin an einer Stelle <xsl:apply-templates> für die Kinder auf o Unmodifizierte Übernahme von Textknoten Charakteristika: o Definiert Depth-first Navigation durch Eingabedokument o Leichte Erweiterbarkeit o Ähnlichkeit von Eingabe- und Ausgabestruktur o Eignung für narrative, text-orientierte Dokumente mit unbegrenzter Tiefe o Geeignet für text-orientierte Anwendungen mit Mixed Content Beispiel: 23 Funktionale Programmierung (rekursiv) • • Benannte und über Namen aufrufbare Templates mit Parametern Turin-Vollständigkeit → berechenbarkeitsuniversell Pipes and Filters Prinzip mit XSLT • • • Filters: Komponenten, die Datenströme verarbeiten (ein Eingabestrom und ein Ausgabestrom) Pipes: Komponenten, die Ausgabestrom eines Filters mit Eingabestrom eines anderen Filters verbinden (first in first out), mit Unterstützung von Synchronisation und Pufferung Anwendung im Document Engineering: o XSLT-Programme als Filter o XML als Repräsentationsform für Datenströme o Unterstützung für Filter mittels Frameworks Prozessmodell von XSLT • • • • • Ausführung eines XSLT Programms für Eingabedokument erzeugt Ergebnisdokument Arbeitsauftrag: Konten im Eingabedokument + Einfügestelle im Ergebnisdokument o Anwenden des XSLT-Programms auf Knoten im Eingabedokument erzeugt Kontenstruktur, die an Einfügestelle das Ergebnisdokument eingefügt wird Initialer Arbeitsauftrag: Wurzelknoten des Eingabedokuments + Einfügestelle direkt unter dem Wurzelknoten des ansonsten leeren Ergebnisdokuments Arbeitsaufträge werden in Top-Down-Reihenfolge abgearbeitet, beginnend beim initialen Arbeitsauftrag Abarbeiten eines Arbeitsauftrags: o Auswahl von Template im XSLT-Programm, das laut Attribut match auf den Eingabeknoten im Arbeitsauftrag passt o Ausführung des Inhalts des Templates und Einfügen der erzeugten Knoten an Einfügestelle ▪ Bei xsl:apply-templates: für jeden mit Attribut select ausgewählten Eingabeknoten wir ein neuer Arbeitsauftrag generiert Vergleich zwischen XQuery und XSLT • Charakteristika von Dokumenten in XML o Text-orientierte, narrative Dokumente (→ XSLT zur Aufbereitung) ▪ Primär für das Lesen durch Menschen ▪ Verlagsprodukte, Webseiten, technische Dokumentationen, … ▪ Tiefe, sogar potentiell unbeschränkte Hierarchie ▪ Auch unmarkierte Textfragmente (Mixed content) o Daten-orientierte Dokumente (→ XQuery zur Aufbereitung) ▪ Primär für die automatische Verarbeitung ▪ Datenbanksätze, Nachrichten, … ▪ Beschränkte Hierarchie ▪ Nur markierte Textfragmente Profil XSLT • • Deklarative Sprache für Transformationen Typische Transformationen für Text- und Datendokumente: o Umbenennung von Textstrukturen o Verschieben und Duplizieren von Textstrukturen o Generieren und Unterdrücken von Textstrukturen o Sortieren 24 o o Filtern … 5 XML-Technologien in Web-Anwendungen (Nicht klausurrelevant) XStack Architektur • • Web-Browser als Clients mit folgenden Technologien: o XHTML, SVG o XForms o XSLT Server sind XML-Datenbank-Systeme hinter einem Web-Server mit folgenden XMLTechnologien o XQuery mit Update Facility o XSLT Kommunikation • • • • http RESTful URLs Austausch von XML-Daten in POST Requests und in Responses Deklaratives Mapping von http Requests auf XQuery-Funktionen über RestXQAnnotationen Eigenschaften • • • Kodierung von Daten durchgängig in XML [kein „Impedence Mismatch“ (Objekte auf Datenbankstrukturen mappen)] Standardisierte Sprachen zur Bearbeitung Standard-konforme Implementierungen auf allen Plattformen Alternativen • • • LAMP: Linux, Apatche, MySQL, PHP MEAN: MongoDB, Express, Angular, NodeJS MERN: MongoDB, Express, React, NodeJS 25 Powered by TCPDF (www.tcpdf.org)