1 / 33

DTD und W3C XML Schema

DTD und W3C XML Schema. Seminar XML und Datenbanken Vortrag: Sven Blüge. DTD (Dokumenttyp-Deklaration). Inhalt genaue Definition aller nutzbaren Elemente und Entities Inhalt und Attribute der Elemente Zweck Validierung des XML-Dokuments Dokumentation der gewünschten Struktur.

donoma
Download Presentation

DTD und W3C XML Schema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DTD und W3C XML Schema Seminar XML und DatenbankenVortrag: Sven Blüge

  2. DTD (Dokumenttyp-Deklaration) Inhalt genaue Definition aller nutzbaren Elemente und Entities Inhalt und Attribute der Elemente Zweck Validierung des XML-Dokuments Dokumentation der gewünschten Struktur

  3. Element-Deklaration Festlegung des allgemeinen Typs Beschreibung des Inhalts Reihenfolge der Deklarationen sind beliebig person enthält genau einmal name und eine beliebige Anzahl von beruf-Elementen name muß genau einmal vorname und einmal nachname enthalten vorname, nachname und beruf haben den Typ PCDATA (Parsed Character Data) DTD (person.dtd) <!ELEMENT person (name, beruf*)> <!ELEMENT name (vorname, nachname)> <!ELEMENT vorname (#PCDATA)> <!ELEMENT nachname (#PCDATA)> <!ELEMENT beruf (#PCDATA)> Gültiges XML-Dokument <!DOCTYPE person SYSTEM "http://xyz.de/person.dtd"> <person> <beruf>Förster</beruf> <name> <vorname>Peter</vorname> <nachname>Mustermann</nachname> </name> <beruf>Fahrer</beruf> <beruf>Mechaniker</beruf> </person> DTD am Beispiel

  4. Dokumenttyp-Deklaration 1 • Deklaration einer externen DTD: <!DOCTYPE person SYSTEM "http://xyz.de/person.dtd"> Bedeutung: • Wurzelelement des XML-Dokuments ist person • XML-Dokument bezieht sich auf die DTD in der Datei person.dtd • Quelle kann lokal oder im Internet liegen

  5. Dokumenttyp-Deklaration 2 • DTD kann im XML-Dokument enthalten sein (interne Deklaration) <!DOCTYPE person[ ../.. ]> • Kombination externer/interner Deklaration möglich <!DOCTYPE person SYSTEM "name.dtd" [ <!ELEMENT beruf (#PCDATA)> <!ELEMENT person (name, beruf*) ]>

  6. Element-Deklaration 1 • Syntax: <!ELEMENT elementname (inhaltsmodell)> • #PCDATA • Ist einfachstes Inhaltsmodell • Hat keine Kindelemente • Enthält vom Parser ersetzte Zeichendaten <!ELEMENT telefonnummer (#PCDATA) • einfache Kindelemente • Enthalten nur einzelne Kindelemente <!ELEMENT fax (telefonnummer)>

  7. Element-Deklaration 2 • Folgen (Sequenzen) • Enthält mehrere Kindelemente • Anzahl der Kinder im XML-Dokument durch Suffix bestimmt: • ? Kein oder ein Element erlaubt • * Kein oder mehrere Elemente erlaubt • + Ein oder mehrere Elemente erlaubt • Erfolgt keine explizite Suffix-Angabe, so muss das Kindelement genau einmal vorkommen <!ELEMENT name (vorname, zweiter_vorname*, nachname)> • Auswahl • Auswählbare Elemente werden durch „|“ getrennt <!ELEMENT ziffer (null | eins | zwei | drei)> • Klammern • Schachtelung von Auswahl und Folgen möglich <!ELEMENT kreis (punkt, (radius | durchmesser))>

  8. Element-Deklaration 3 • Gemischter Inhalt • Enthält Kindelemente und Zeichendaten <!ELEMENT definition (#PCDATA, begriff)*)> • Die Liste der Kindelemente kann beliebig lang sein, allerdings muss #PCDATA an erster Stelle stehen. • Gezeigte Deklaration ist die einzig gültige Möglichkeit, gemischten Inhalt darzustellen • Leere Elemente • Für Elemente ohne Inhalt. Können Attribute enthalten • <!ELEMENT bild EMTPY> • Beispiel: <bild quelle="bild.jpg"/> • ANY • Ein als ANY deklariertes Element kann beliebigen Inhalt haben • Enthaltene Elemente müssen definiert sein • <!ELEMENT seite ANY>

  9. #REQUIRED Angabe erforderlich #IMPLIED Angabe optional #FIXED Angabe optional, Wert unveränderlich Literal Standardwert 10 erlaubt Attributtypen: CDATA, NMTOKEN, NMTOKENS, Aufzählung, ENTITY, ENTITIES, ID, IDREF, IDREFS, NOTATION <!ATTLIST bild quelle CDATA #REQUIRED hoehe CDATA #IMPLIED breite CDATA "250" alt CDATA #FIXED "Bild" > Entspricht: <!ATTLIST bild quelle CDATA #REQUIRED> <!ATTLIST bild hoehe CDATA #IMPLIED> <!ATTLIST bild breite CDATA "250"> <!ATTLIST bild alt CDATA #FIXED "Bild"> Attribut-Deklaration

  10. Entity-Deklaration • Allgemeine Entities • Vorkommen: Dokumenteninhalt • 5 vordefinierte Entities (<,>,&,‘,“) • Deklaration <!ENTITY baustein "Das ist ein sehr langer Textbaustein"> • Nutzung &baustein; • Externegeparsteallgemeine Entities • Vorkommen: Dokumenteninhalt <!ENTITY baustein2 SYSTEM "http://www.xyz.de/myentities.xml"> • Referenz &baustein2;kann vom Parser durch den externen Inhalt ersetzt werden • Parameter-Entities • Vorkommen: DTD • Gruppiert Elemente • Redefinition externer Entities intern möglich <!ENTITY % bilddaten "hoehe, breite, farbtiefe"> <!ELEMENT bild (%bildparameter;)>

  11. Externe DTD-Teilmengen • DTDs sind aufteilbar • Kombination mittels externer Paramter-Entity-Referenzen <!ENTITY % namen SYSTEM "namen.dtd"> %namen; • Bedingtes Einfügen

  12. W3C XML Schema Hauptzweck Validierung Dokumentation Nachfolger von DTD XML Schema nutzt XML Notation

  13. Elemente: name, vorname, nachname Attribute: id Schema-Dokumentelement: schema Zur Erstellung eines XML Schemas ist es nötig, einzelne XML Elemente zu klassifizieren. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:attribute name="id" type="xs:string"/> <xs:element name="vorname" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="name" type="xs:string"/> <xs:complexType> <xs:sequence> <xs:element ref="vorname"> <xs:element name="nachname„ type="xs:string"/> </xs:sequence> <xs:attribute ref="id"> </xs:complexType> </xs:schema> XML Schema – Ein Beispiel

  14. Klassifizierung 1Inhaltsmodelle

  15. Klassifizierung 2Typen • Enthält ein Element nur Textknoten und weder Kindelemente noch Attribute, dann wird es als einfacher Typ bezeichnet. In allen anderen Fällen handelt es sich um komplexe Typen. • Einfache Typen (simpleType) <name> Peter Mutermann </name> • Komplexe Typen (complexType) <title lang="de"> Auf den Hund gekommen </title> <name id="008"> <vorname>Peter</vorname> </name>

  16. Elementdefinition • xs ist das Präfix, welches mit dem W3C XML Schema verknüpft ist (auch wenn im folgenden teilweise weggelassen, so ist doch der Bezug zum W3C XML Schema gemeint) • xs:string ist ein Datentyp, der im, mit xs verknüpften, Schema definiert ist • Reihenfolge der Definition ist ohne Bedeutung • Sprachelemente können nahezu beliebig geschachtelt werden • Definitionen im Wurzelelement (hier schema) werden als global bezeichnet <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="name" type="xs:string"/> <xs:element name="born" type="xs:date"/> <xs:attribute name="id" type="xs:ID"/> <xs:attribute name="lang" type="xs:language"/> </xs:schema>

  17. Typen 1Überblick

  18. Typen 2primitive Typen

  19. Typen 3string-ähnliche Typen

  20. Typen 4Numerische Typen

  21. Definition eigener Typen 1einfache Datentypen, restriction • Begrenzte Anzahl von primitiven Typen vorhanden • Neubildung von Typen durch Ableitung möglich • Neue Eigenschaften ergeben sich durch Erweiterung (nur bei komplexen Datentypen) oder Einschränkung • Beispiel: Definition eines Ganzzahlwertes mit dem Wertebereich [-2;5] <xs:simpleType name="myInteger"> <xs:restriction base="xs:integer"> <xs:minInclusive value="-2"/> <xs:maxExclusive value="5"/> </xs:restriction> </xs:simpleType> • restiction gibt den Datentyp an, auf den die neuen Einschränkungen angewendet werden sollen

  22. Definition eigener Typen 2 komplexe Typen, extension • Nachfolgende Definition hat die Aussage: Das Element titel hat komplexen Typ, der einfachen Inhalt hat, der wiederum durch Erweiterung des Typs xs:string entsteht, indem das an anderer Stelle definierte Attribut lang hinzugefügt wird. <xs:complexType name="titel"> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute ref="lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="titel" type="titel"> • Beispiel: <titel lang="de"> Auf den Hund gekommen </titel>

  23. <xs:complexType name="author"> <xs:sequence> <xs:element ref="name" maxOccurs="unbounded"/> <xs:element ref="born" minOccurs="1"/> <xs:element ref="dead" minOccurs="0"/> </xs:sequence> <xs:attribute ref="id"/> </xs:complexType> <xs:element name="author" type="author"> sequence Standard für das minimale und maximale Auftreten eines Kindelements ist 1 Reihenfolge in einer Sequence ist bindend Attribute nach Folge definieren Beispiel: sequence ist Kompositor und element-Elemente sind Partikel all definiert Folge, bei der Reihenfolge unbedeutend Einschränkungen: Nur als Kompositor, nicht Partikel Nur Elemente vom Typ xs:element enthalten Auftretenshäufigkeit von Elementen nicht größer als 1 Das Beispiel für sequence ist daher nicht für all geeignet Definition eigener Typen 3 komplexe Typen, sequence, all

  24. Definition eigener Typen 4 komplexe Typen, choise • Ein Element kann verschiedene Möglichkeiten haben, Inhalte aufzunehmen. • Im Beispiel ist choise ein Kompositor, die element- und sequence-Elemente die Partikel <xs:complexType name="author"> <xs:choise> <xs:element ref="name"> <xs:sequence> <xs:element ref="first-name"> <xs:element ref="middle-name" minOccurs="0"> <xs:element ref="last-name"> </xs:sequence> </xs:choise> <xs:element ref="born"> <xs:element ref="dead" minOccurs="0"> </xs:complexType> <xs:element name="author" type="author">

  25. Wenn bestimmte Gruppen oft benötigt werden, lassen sie sich zu Gruppen zusammenfassen Gruppen müssen global definiert werden Es gibt Attribut- und Elementgruppen Definition Attributgruppe <xs:attributeGroup name="bookAttributes"> <xs:attribute name="id" type ="xs:ID"/> <xs:attribute name="available" type="xs:boolean"/> </xs:attributeGroup> Benutzung: <xs:attributeGroup ref="bookAttributes"> Definition Elementgruppe <xs:group name="name"> <xs:choise> <xs:element ref="name"> <xs:sequence> <xs:element ref="first-name"> <xs:element ref="middle-name" minOccurs="0"> <xs:element ref="last-name"> </xs:sequence> </xs:choise> </xs:group> Benutzung: <xs:group ref="name"> Definition eigener Datentypen 5 komplexe Typen, group

  26. Schema-InklusionAufteilung eines Schemas • Schema-Inclusion (include) • Mehrere Teile werden mittels include in ein Hauptschema eingebunden <xs:include schemaLocation="eins.xsd"/> • Doppelte Definitionen in beiden Schemas werden als Fehler behandelt • Schema-Inclusion mittels Redefinition (redefine) • Typen und Element/Attributgruppen des eingebundenen Schemas können unter gleichem Namen redefiniert werden, was sonst verboten wäre • Erweiterung / Einschränkung wie beim Erstellen eigener Datentypen möglich • Inclusionsmethoden von XML • Externe geparste Entities • Können lokal eingebunden werden. • Werden in DTD deklariert und im Dokument als Entity referenziert • XInclude • Können lokal eingebunden werden • Vorherige Deklaration nicht notwendig

  27. Eindeutigkeit, Schlüssel und Schlüsselverweise 1 • Ein XML-Dokument muss die Möglicheit bieten, einhaltene Infomationen zu identifizieren und zu referenzieren • Dazu bietet XML Schema zwei Möglichkeiten • ID, IDREF und IDREFS • Teilweise von DTD geerbt • Lexikalischer Raum wie beim Datentyp NCName (darf u.a. nicht mit Ziffern beginnen und kein Whitespace enthalten) • Global definiert • Kann in Elementen und Attributen verwendet werden • Beispiel: <xs:element name="ref" type="xs:IDREF" use="requirded"/> • ID stellt den Identifikator, IDREF den Verweis darauf und IDREFS den Verweise auf eine Liste von Identifikatoren dar • Der Wert für ID muss im Dokument eindeutig sein, der Wert für IDREF bzw. IDREFS muss im Dokument vorhanden sein

  28. Eindeutigkeit, Schlüssel und Schlüsselverweise 2 • unique, key und keyref • unique • Der selector gibt den relativen Pfad zum Unterelement an und field das/die Element/e, die zur Identifikation genutzt werden. • Knoten, deren „field“ nicht existiert, werden nicht beachtet • In jeder Bibliothek sollte ein Buch, das über seine ISBN identifiziert wird, eindeutig bestimmt sein. <xs:element name="bibliothek"> <xs:complexType> .../... </xs:complexType> <xs:unique name="book"> <xs:selector xpath="book"/> <xs:field xpath="isbn1"/> <xs:field xpath="isbn2"/> </xs:unique> </xs:element>

  29. Eindeutigkeit, Schlüssel und Schlüsselverweise 3 • key • Hat die selben Eigenschaften wie unique und zusätzlich die Bedingung, dass die als field deklarierten Knoten angegeben werden müssen <xs:element name="bibliothek"> <xs:complexType> .../... </xs:complexType> <xs:key name="book"> <xs:selector xpath="book"/> <xs:field xpath="isbn"/> </xs:key> </xs:element>

  30. Eindeutigkeit, Schlüssel und Schlüsselverweise 4 • keyref • Kann als Verweis auf key und unique verwendet werden • keyref muss unterhalb des Elements oder dessen Nachkommen definiert sein, in dem die referenzierten Elemente key oder unique definiert sind • Ein referenzierter Wert muß im Dokument vorhanden sein <xs:element name="bibliothek"> <xs:complexType> .../... </xs:complexType> <xs:key name="ID"> <xs:selector xpath="book"/> <xs:field xpath="isbn"/> </xs:key> <xs:keyref name="IDREF" refer="ID"> <xs:selector xpath="book"/> <xs:field xpath="isbn"/> </xs:keyref> </xs:element>

  31. <xs:element name="author" type="authorType"> <!– Beschr. des Autors eines Buches. --> </xs:element> <xs:element name="author" type="authorType"> <xs:annotation> <xs:documentation xml:lang="de"> Der Autor eines Buches. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="author" type="authorType" doc:doc="Beschr. des Autors eines Buches." xmlns:doc="http://xyz.de/doc"/> XML 1.0 – Kommentare annotation-Element documentation appinfo Fremdattribute Dokumentation und Kommentare

  32. DTDvs.W3C XML Schema

  33. Vorteile von XML Schema gegenüber DTD • statt 10 Datentypen werden bereits 41 Basis-Datentypen definiert • mit den objektorientierten Methoden Restriction und Extension können diese Basis-Typen eingeschränkt bzw. ausgedehnt werden und somit die Beschreibung beliebiger Datenstrukturen erlauben • XML Schemas werden selbst in XML erstellt, sodass Parser und Transformationen (XSLT) sehr einfach darauf angewendet werden können • beliebige Elemente können als eindeutige Elemente und sogar als Schlüsselwerte definiert werden (unique, key) • statt in einer sequentiellen Anordnung von Elementen können Elemente auch in einer Menge angeordnet werden (all) • beliebige Elemente können den gleichen Namen besitzen, aber verschiedenen Inhalt (mittels unterschiedlicher Namespaces)

More Related