2. Datenmodellierung mit XML und XML-Schema Was ist XML? 2. Datenmodellierung mit XML und XML-Schema 2. Datenmodellierung mit XML und XML-Schema Was ist XML? Semistrukturierte Daten Lernziele: Eigenschaften von XML benennen können, den Aufbau von XML-Dokumenten kennen, die wichtigsten Konzepte von XML-Schema kennen, in der Lage sein, mittels XML-Schema eigene Dokumentsprachen zu definieren und Mit semistrukturiert bezeichnet man Daten, deren Strukturen unregelmäßig oder unbekannt sind. Solche Daten sind im Internet häufig anzutreffen. Dies steht im Widerspruch zu relationalen Datenbanksystemen. Hier liegen auf jeder Ebene des Modells Schemata vor. Techniken für die Adressierung und Abfrage von XML-Dokumenten kennen. 42 44 2. Datenmodellierung mit XML und XML-Schema Was ist XML? XML 2. Datenmodellierung mit XML und XML-Schema Was ist XML? Eigenschaften semistrukturierter Daten XML steht für extensible Markup Language durch das W3C entwickeltes Dokumentenformat einfach, flexibel, von SGML abgeleitet SGML := Standard Generalized Markup Language statische Irregularität: Datenobjekte haben die gleiche Semantik, sind aber unterschiedlich strukturiert. dynamische Irregularität: Die Struktur der Daten kann sich häufig ändern. fehlende Schemainformation: Für die Daten liegt keine allgemeine Strukturbeschreibung vor. Stattdessen ist die Strukturinformation in den Daten selbst enthalten. pfadorienterter Datenzugriff: Datenobjekte stellen Bäume oder Graphen dar. Für den Zugriff auf Komponenten solcher Objekte ist eine Navigation im Baum/Graph notwendig. 43 45
2. Datenmodellierung mit XML und XML-Schema Was ist XML? XML für semistrukturierte Daten 2. Datenmodellierung mit XML und XML-Schema Was ist XML? 6. XML-Dokumente sollen lesbar und leicht verständlich sein. 7. XML sollte rasch definiert werden. XML ist ein Datenmodell für semistrukturierte Daten. Es ist zeichenorientiert und zielt in erster Linie ab auf Lesbarkeit und Modellierung und die Austauschbarkeit von semistrukturierten Daten zwischen Anwendungen. 8. Das Design soll formal und prägnant sein. 9. XML-Dokumente sollen einfach zu erstellen sein. 10. Eine gewissen Knappheit in der Markierungsweise von XML steht nicht im Vordergrund. 46 48 2. Datenmodellierung mit XML und XML-Schema Was ist XML? Entwurfsziele von XML Auszeichnungssprache 1. XML soll einfach und unkompliziert im Internet verwendbar sein. 2. XML soll eine große Zahl von Applikationen unterstützen. 3. XML soll mit SGML kompatibel sein. 4. Die Entwicklung von Programmen, die XML-Dokumente verarbeiten, soll einfach sein. 5. Die Anzahl optionaler Eigenschaften soll in XML so gering wie möglich gehalten werden (am besten gleich null). Bei einer Auszeichnungssprache werden die Inhalte eines Datenstroms durch Auszeichnungen (Tags) strukturiert. Ausschließlich die Auszeichnungen dienen zur Strukturierung des Inhalts. Die Auszeichnungen sind so gehalten, daß sie selbst als reiner Text innerhalb des Inhalts eines Dokuments zu identifizieren sind. Durch solche Auszeichnungen werden Teile des Inhalts benannt. Diese Inhalte heißen Elemente. Die Länge der Auszeichnungen ist variabel und kann mit Informationen über den ausgezeichneten Inhalt angereichert werden. 47 49
Beispiel 2.1. Auszeichnungen in einem XML-Dokument: <Adresse> <Ort>Bonn</Ort> <PLZ>53119</PLZ> <Strasse>Paulusplatz</Strasse> <Nummer>10</Nummer> </Adresse> Beispiel 2.2. Ein XML-Dokument zur Repräsentation einer Bestellung: <?xml version="1.0"?> <!DOCTYPE Order SYSTEM "http://some-provider.de/order.dtd"> <Order> <OrderHeader> <OrderID>4711</OrderID> <OrderDate>2000-11-11</OrderDate> <Customer> <CustName>Peter Becker</CustName> <CustEmailAdress> peter.becker@fh-bonn-rhein-sieg.de </CustEmailAdress> </Customer> </OrderHeader> <Items> <Item quantity="1" deliverydate="2001-01-02"> <ProdName>Web-Visitenkarte</ProdName> 50 52 Dokument und Dokumenttyp Ein XML-Dokument ist eine Instanz eines XML-Dokumenttyps, der wiederum durch die Dokumentenrepräsentationssprache XML beschrieben wird. SGML XML Dokumenten repräsentations sprache <UnitPrice>1.00</UnitPrice> </Item> </Items> </Order> OrderHeader Order Items HTML XHTML MeinTyp Dokumenttyp OrderID OrderDate Customer Item HTML Dokument XHTML Dokument MeinTyp Dokument Dokumentinstanz CustName CustEmailAdress ProdName UnitPrice 51 53
Ziele eines expliziten Schemas: Explizitmachen der Struktur für Anwendungen Generische Erkennung und Vermeidung von Fehlern in den XML- Dokumenten Beispiel 2.3. Eine DTD für das Dokument von Beispiel 2.2: <!DOCTYPE Order [ <!ELEMENT Order (OrderHeader, Items) > <!ELEMENT OrderHeader (OrderID, OrderDate, Customer) > <!ELEMENT Customer (Custname, CustEmailAdress?) > <!ELEMENT Items (Item+) > <!ELEMENT Item (ProdName, UnitPrice) > <!ATTLIST Item quantity CDATA #REQUIRED deliverydate CDATA #IMPLIED > <!ELEMENT ProdName (#PCDATA) >... ]> 54 56 Dokumenttypdeklaration Elemente Ein XML-Dokument kann eine Dokumenttypdeklaration (document type declaration) enthalten. In solch einer Dokumenttypdeklaration werden die zur Verfügung stehenden Auszeichnungen direkt angegeben oder es wird auf eine Auszeichnungsdeklaration verwiesen. In der Auszeichnungsdeklaration wird eine Grammatik angegeben, der das aktuelle Dokument folgen soll. Diese Grammatik wird als Dokumenttypdefinition (document type definition, DTD) bezeichnet. Über die Deklaration eines Elements wird sein Name und sein Inhaltsmodell beschrieben. Soll das Element keine weiteren Unterelemente haben, so ist das Inhaltsmodell EMPTY (leer) oder PCDATA (nur Zeichen enthaltend). <!ELEMENT text (#PCDATA)> <!ELEMENT flag EMPTY> <text>bla bla bla</text> <flag/> 55 57
Ansonsten wird eine Strukturierung von Unterelementen angegeben. Hierfür stehen die folgenden Strukturierungsmöglichkeiten zur Verfügung: Sequenz: Unterelemente werden durch Komma getrennt angegeben. Auswahl: Unterelemente werden durch getrennt angegeben. Wiederholung: Ein + hinter einem Unterelement gibt an, daß dieses beliebig oft auftreten kann, jedoch mindestens einmal auftreten muß. Wiederholung: Ein * hinter einem Unterelement gibt an, daß dies beliebig oft eventuell auch gar nicht auftreten kann. Option: Ein? hinter einem Unterelement gibt an, daß dieses einmal oder gar nicht auftreten kann. Mit Mixed Content Type bezeichnet man den Fall, daß ein Element sowohl PCDATA als auch Unterelemente enthalten kann. <!ELEMENT anreisebeschreibung (#PCDATA auto bahn flugzeug)*> <anreisebeschreibung> So kommen Sie zur FH-Bonn-Rhein-Sieg: <bahn>mit der Linie 66 bis St. Augustin Markt</bahn> <auto>am HUMA links/rechts in die Grantham-Allee</auto> <flugzeug>ab Flughafen Koeln/Bonn mit dem Taxi</flugzeug> </anreisebeschreibung> Verwendung von ANY in der Elementdeklaration erlaubt Mixed Content mit beliebigen deklarierten Elementen in beliebiger Struktur. 58 60 PCDATA steht für Parsed Character Data. Dies sind Zeichenfolgen, die spitze Klammern, Apostroph, Anführungszeichen und & nicht enthalten. Diese Zeichen sind Bestandteil der Auszeichnung. Sie müssen über sogenannte Entity-Referenzen aufgelöst werden. Innerhalb solcher Zeichenfolgen werden Entity-Referenzen ersetzt. CDATA steht für Character Data. Hier ist alles erlaubt, es findet keine Auflösung der Zeichen statt. Attribute Den Elementen eines XML-Dokuments können Attribute zugeordnet sein, in denen weitere Eigenschaften der Elemente angegeben werden. Attributdeklarationen umfassen: 1. einen Namen für das Attribut, 2. einen Datentyp für den Attributwert CDATA, ID, IDREF/IDREFS, ENTITY/ENTITIES, NMTOKEN/NMTOKENS 59 61
3. Angaben zur Verwendung: #REQUIRED das Attribu muss angegeben werden #IMPLIED das Attribut ist optional #FIXED Verwendung eines Defaultwertes 4. Angabe zu einem Defaultwert bei der Verwendung von #FIXED. Einige Entity-Referenzen kennt der Parser implizit. Dies sind die Entity-Referenzen für die Darstellung der in PCDATA nicht erlaubten Zeichen. In einer DTD können interne und externe Entity-Referenzen deklariert werden. Beispiel 2.4. <!ENTITY vorlesungstitel "Datenbanken: Konzepte, Methoden und Modelle"> In einem XML-Dokument kann nun eine Referenz wie folgt verwendet werden: <titel>&vorlesungstitel;</titel> 62 64 Entities Beispiel 2.5. Durch die Deklaration von <!ENTITY ueberdendozent SYSTEM "http://www.inf.fh-bonn-rhein-sieg.de/becker.xml"> Entity-Referenzen sind Platzhalter für Ersetzungen. Eine Entity-Referenz kann Zeichendaten beschreiben oder eine komplette XML-Instanz. Ein Entity ist irgendeine Einheit von wohlgeformten XML, auf die eine Entity-Referenz entweder direkt oder über eine URL verweist. Entity-Referenzen werden in der DTD deklariert. In PCDATA haben sie die Form: &Name; wird eine Referenz auf ein externes XML-Dokument erzeugt. Verwendet man nun &ueberdendozent;, so wird an dieser Stelle das komplette XML-Dokument eingesetzt. Durch externe Entity-Referenzen werden XML-Dokumente für andere XML-Dokumente wiederverwendbar. Bei der Einfügung findet wiederum eine Ersetzung von Entity- Referenzen statt. Ein XML-Dokument muß also nicht physikalisch aus einer einzelnen Datei bestehen. 63 65
Processing Instructions 2. Datenmodellierung mit XML und XML-Schema Eigenschaften von XML-Dokumenten Eigenschaften von XML-Dokumenten Ergänzung des Dokuments um Verarbeitungsanweisungen Syntax: <? PI-Name PI-Anweisung?> PI-Name darf die Zeichenkette xml nicht enthalten. Solche Processing Instructions sind reserviert. Processsing Instructions werden an den entsprechenden XML- Prozessor weitergeleitet. Ein XML-Dokument ist wohlgeformt, wenn es: Die syntaktischen Regeln von XML erfüllt, das Dokument genau ein Wurzelelement enthält, alle Elemente ordnungsgemäß verschachtelt sind, Attributnamen nicht mehr als einmal für ein Element auftreten, Attributewerte in Anführungszeichen oder Hochkommata eingeschlossen sind, 66 68 Kommentare 2. Datenmodellierung mit XML und XML-Schema Eigenschaften von XML-Dokumenten Attributwerte keine öffnende spitze Klammer enthalten und alle referenzierten Entities geeignet deklariert sind. Syntax:<!-- beliebiger text --> Kommentare können sowohl in der DTD als auch im Dokument auftreten. Für wohlgeformte Dokumente kann der Strukturbaum erstellt werden, ohne daß Kenntnisse über den Dokumenttyp erforderlich sind. Zweck: Erhöhung der Lesbarkeit eines Dokuments oder einer DTD Kommentare sollten nicht dazu verwendet werden, Informationen, die zum Dokument gehören, darzustellen. Auch Verarbeitungsanweisungen sollten nicht in Kommentaren enthalten sein. 67 69
2. Datenmodellierung mit XML und XML-Schema Eigenschaften von XML-Dokumenten Gültigkeit 2. Datenmodellierung mit XML und XML-Schema XML-Schema Nachteile von DTDs: DTDs benutzen innerhalb von XML eigene syntaktische Konstrukte. Ein wohlgeformtes XML-Dokument heißt gültig, wenn es: die durch die DTD definierten Beschränkungen erfüllt. DTDs kennen im Wesentlichen nur den Datentyp String (#PCDATA). DTDs stellen keine Namensräume zur Verfügung. Die Eigenschaften Wohlgeformtheit und Gültigkeit werden durch XML- Prozessoren überprüft. 70 72 2. Datenmodellierung mit XML und XML-Schema XML-Schema XML-Schema 2. Datenmodellierung mit XML und XML-Schema XML-Schema XML-Schema Vorteile eines expliziten Schemas: Bekanntmachen der Struktur vereinfachte Verarbeitung in Applikationen dedizierte Speicherung automatische Konsistenzprüfungen Die XML Schema Recommendation des W3C besteht aus: Teil 0: Primer, Erläuterung zu den Teilen 1 und 2 Teil 1: Strukturen Teil 2: Datentypen Erkennung der Semantik von Elementen DTDs und XML-Schema sind die bekanntesten Methoden zur Erstellung von Schemata in XML. 71 73
2. Datenmodellierung mit XML und XML-Schema XML-Schema Eigenschaften von XML-Schema vielfältige, vordefinierte Datentypen Definition eigener Datentypen umfangreiche Darstellungsmöglichkeiten Erweiterbarkeit Definition von Integritätsbedingungen XML-Syntax Verwendung von Namensräumen 74 76 Datentypen Einfache und komplexe Datentypen Ein Datentyp gemäß XML-Schema besteht aus: Wertebereich (value space): Menge verschiedener Werte Repräsentationsraum (lexical space): Menge von lexikalischen Repräsentationen der Werte Aspekte (facets): Eigenschaften für den Wertebereich oder den Repräsentationsraum XML-Schema stellt eine Vielzahl von Standard-Datentypen bereit. Ein einfacher Typ (simple type) ist ein Datentyp, der weder Attribute noch weitere Elemente beinhaltet. <ort>sankt Augustin</ort> Ein komplexer Typ (complex type) besteht aus einer Menge von Attributdeklarationen und/oder einem Inhaltsmodell. <vorlesung semester="ws05/06"> <dozent>peter Becker</dozent> <title>semantic Web</title> </vorlesung> 75 77
Definition einfacher Typen Benutzerdefinierte Typen basieren auf bereits definierten anderen Datentypen (Basistyp). Über Aspekte kann der benutzerdefinierte Typ gegenüber seinem Basistyp eingeschränkt werden in bezug auf grundlegende Eigenschaften Wertebereich Repräsentationen Behandlung von Zwischenraum Aspekte für den Wertebereich: Unter- bzw. Obergrenzen für einen geordneten Wertebereich: minexclusive, maxexclusive, mininclusive, maxinclusive Längenbeschränkungen für Strings und Listen: length, minlength, maxlength Genauigkeitsbeschränkungen für Datentypen abgeleitet von decimal: totaldigits, fractiondigits Aufzählung der erlaubten Werte: enumeration 78 80 Aspekte Aspekte für die Repräsentation: Aspekte für grundlegende Eigenschaften: Ordnung auf einem Datentyp (total, partiell, nicht geordnet) Beschränktheit des Wertebereichs Kardinalität (endlich, abzählbar) Datentyp ist numerisch Muster in Form eines regulären Ausdrucks für die Repräsentation: pattern Evtl. implizite Einschränkung des Wertebereichs. Behandlung von Zwischenraum: whitespace Mögliche Werte für whitespace: preserve: Zwischenraum bleibt im Wert erhalten replace: Tabulator-, Zeilenende und Wagenrücklaufzeichen werden durch Leerzeichen ersetzt. collapse: Führende und abschließende Leerzeichen werden unterdrückt, Folgen von Leerzeichen auf ein einziges reduziert. Selbstdefinierte Aspekte sind in XML-Schema nicht möglich. 79 81
Beispiel 2.6. Typ für Ortsnamen mit einer maximalen Länge von 30: <xs:simpletype name="ort"> <xs:restriction base="xs:string"> <xs:length value="30"/> </xs:restriction> </xs:simpletype> Definition eines Typs Kategorie mit erlaubten Werten zwischen 1 und 5: <xs:simpletype name="kategorie"> <xs:restriction base="xs:integer"> <xs:mininclusive value="1"/> <xs:maxinclusive value="5"/> </xs:restriction> </xs:simpletype> Listenbildung und Vereinigung Für einfache Typen stehen zwei weitere Typkonstruktoren zur Verfügung: Listenbildung: Aus einem einfachen Typ kann ein Listentyp mit dem einfachen Typ als Basistyp gebildet werden. Vereinigung: Wertebereiche und Repräsentationsräume von einfachen Typen können vereinigt werden. 82 84 Definition eines Typs Hausnummer: <xs:simpletype name="hausnummer"> <xs:restriction base="xs:string"> <xs:pattern value="[1-9][0-9]*[a-z]?"/> </xs:restriction> </xs:simpletype> Beispiel 2.7. Definition einer Telefonnummer: <xs:simpletype name="telefonnummer"> <xs:restriction base="string"> <xs:pattern value="0[0-9]+/[0-9]+"/> </xs:restriction> </xs:simpletype> Definition einer Liste von Telefonnummern und Definition eines Typs für Kontakte: <xs:simpletype name="telefonnummern"> <xs:list itemtype="telefonnummer"/> </xs:simpletype> <xs:simpletype name="kontakt"> <xs:union membertypes="telefonnummer email"/> </xs:simpletype> 83 85
Definition komplexer Typen Inhaltsmodelle Die Definition eines komplexen Typs ist erforderlich, wenn: Elemente Attribute haben können, Kindelemente vorhanden sein können oder Elemente einen leeren Inhalt haben. Für complexcontent stehen die folgenden Inhaltsmodelle zur Verfügung: sequence: Die nachfolgend definierten Elemente treten in genau dieser Reihenfolge auf. choice: Von den nachfolgend definierten Elementen tritt genau eins auf. all: Die nachfolgend definierten Elemente treten höchstens einmal in beliebiger Reihenfolge auf. 86 88 Einfacher bzw. komplexer Inhalt: simplecontent: Elemente dieses Typs haben keine Kindelemente. complexcontent: Es können Kindelemente auftreten. Einschränkende bzw. erweiternde Typdefinition: restriction: Ein bereits bestehender Typ wird durch die Angabe von Eigenschaften eingeschränkt. extension: Ein bereits bestehender Typ wird um zusätzliche Attribute oder Elemente ergänzt. Für diese Eigenschaften stehen jeweils XML-Schema-Elemente zur Verfügung. Beispiel 2.8. Definition eines komplexen Typs für Adressen: <xs:complextype name="adresse"> <xs:complexcontent> <xs:restriction base="xs:anytype"> <xs:sequence> <xs:element name="ort" type="ort"/> <xs:element name="plz" type="xs:integer"/> <xs:element name="strasse" type="xs:string"/> <xs:element name="nr" type="hausnummer"/> </xs:sequence> </xs:restriction> </xs:complexcontent> </xs:complextype> Die XML-Schema-Elemente für complexcontent und restriction sind hierbei optional. 87 89
<xs:complextype name="adresse"> <xs:sequence> <xs:element name="ort" type="ort"/> <xs:element name="plz" type="xs:integer"/> <xs:element name="strasse" type="xs:string"/> <xs:element name="nr" type="hausnummer"/> </xs:sequence> </xs:complextype> Die Vorkommenshäufigkeit für Elemente kann durch folgende Attribute von element beeinflußt werden: minoccurs: minimale Vorkommenshäufigkeit Erweiterung eines Typs um ein zusätzliches Element: <xs:complextype name="hoteladresse"> <xs:complexcontent> <xs:extension base="adresse"> <xs:sequence> <xs:element name="telefon" type="telefonnummer" minoccurs="1" maxoccurs="3"/> </xs:sequence> </xs:extension> </xs:complexcontent> </xs:complextype> maxoccurs: maximale Vorkommenshäufigkeit Fehlen die Attribute, ist der Wert implizit jeweils 1. 90 92 Beispiel 2.9. Erweiterung eines Typs um ein zusätzliches Attribut: <xs:complextype name="kontaktinfo"> <xs:simplecontent> <xs:extension base="kontakt"> <xs:attribute name="name" type="xs:string"/> </xs:extension> </xs:simplecontent> </xs:complextype> 2. Datenmodellierung mit XML und XML-Schema Deklarationen Deklarationen Definitionen: Schemabausteine, die wiederverwendet werden können Deklarationen: Liefern die für die Validierung notwendigen Informationen Es können deklariert werden: Elemente: Damit werden die Tags für das Markup festgelegt. Attribute Notationen 91 93
2. Datenmodellierung mit XML und XML-Schema Deklarationen Elementdeklaration Entweder wird für eine Elementdeklaration auf eine schon bestehende Elementdeklaration oder Typdefinition mittels ref verwiesen oder zu der Elementdeklaration wird ein Tagname (name) und ein Typ angegeben. Die Angabe des Typs kann lokal erfolgen (wie bei Typdefinitionen) oder durch den Verweis auf einen Typ (type). 2. Datenmodellierung mit XML und XML-Schema Deklarationen Definition eines Elements mit komplexem Inhaltsmodell und lokaler Typdefinition: <xs:element name="telefon"> <xs:complextype> <xs:sequence> <xs:element name="vorwahl type="xs:string"/> <xs:element name="rufnummer type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> 94 96 2. Datenmodellierung mit XML und XML-Schema Deklarationen Definition eines Elements auf Basis eines Standard- Beispiel 2.10. typs: <xs:element name="vorlesungstitel" type="xs:string"/> Definition eines optionalen Elements auf Basis eines benutzerdefinierten einfachen Typs: <xs:element name="kategorie" minoccurs="0" type="kategorie"/> Definition eines Elementes durch Verweis auf einen Typ: <xs:element ref="adresse"/> 95