DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

33
DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge

Transcript of DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Page 1: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

DTD und

W3C XML Schema

Seminar XML und DatenbankenVortrag: Sven Blüge

Page 2: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

DTD (Dokumenttyp-Deklaration)

Inhaltgenaue Definition aller nutzbaren Elemente und EntitiesInhalt und Attribute der Elemente

ZweckValidierung des XML-DokumentsDokumentation der gewünschten Struktur

Page 3: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

DTD am Beispiel 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>

Page 4: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Dokumenttyp-Deklaration 1

Page 5: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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*)]>

Dokumenttyp-Deklaration 2

Page 6: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Element-Deklaration 1

Page 7: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

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

Page 8: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Page 9: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Attribut-Deklaration #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">

Page 10: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Allgemeine Entities Vorkommen: Dokumenteninhalt 5 vordefinierte Entities (<,>,&,‘,“) Deklaration<!ENTITY baustein "Das ist ein sehr langer Textbaustein"> Nutzung &baustein;

Externe geparste allgemeine 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;)>

Entity-Deklaration

Page 11: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

<![IGNORE[ <!ELEMENT name (#PCDATA)>]]>

<![INCLUDE[ <!ELEMENT name (#PCDATA)>]]>

<!ENTITY % namen_einfuegen "INLCUDE"><![%namen_einfuegen;[ <!ELEMENT name (#PCDATA)>]]>

DTDs sind aufteilbar Kombination mittels externer Paramter-Entity-Referenzen

<!ENTITY % namen SYSTEM "namen.dtd">%namen;

Bedingtes Einfügen

Externe DTD-Teilmengen

Page 12: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

W3C XML Schema

HauptzweckValidierungDokumentation

Nachfolger von DTDXML Schema nutzt XML Notation

Page 13: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

XML Schema – Ein Beispiel 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>

Page 14: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Klassifizierung 1Inhaltsmodelle

Inhaltsmodell Leer Einfach Komplex Gemischt

Kindelemente Nein Nein Ja Ja

Kindtext Nein Ja Nein Ja

Leeres Inhaltsmodell<name vorname="Peter„ nachname="Mustermann" />

Komplexes Inhaltsmodell<name> <vorname>Peter</vorname> <nachname>Mustermann</nachname></name>

Einfaches Inhaltsmodell<name>Peter Mutermann</name><title lang="de"> Auf den Hund gekommen</title>

Gemischtes Inhaltsmodell<name id="008"> <vorname>Peter</vorname> lebt in Deutschland</name>

Page 15: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Page 16: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Page 17: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Typen 1Überblick

anyType

EinfacherTyp

KomplexerTyp

all

choise

sequence

union

list

atomar buildin

Page 18: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Typen 2primitive Typen

anySimpleType

dateTime durationdate

boolean double float

anyURI QName

decimal

gDay gYear gMonthYeargMonth gMonthDay

string

Page 19: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Typen 3string-ähnliche Typen

stringnormalizedString

token

Name NMTOKENlanguage NMTOKENS

NCName

IDREF ENTITYID

IDREFS ENTITIES

Page 20: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Typen 4Numerische Typen

decimal

integer

long nonNegativeIntegerNameTitel

int

short

byte

negativeInteger unsignedLongpositiveInteger

unsignedInt

unsignedShort

unsignedByte

Page 21: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Page 22: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Page 23: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Definition eigener Typen 3 komplexe Typen, sequence, all

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

Page 24: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Page 25: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Definition eigener Datentypen 5 komplexe Typen, group

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

Page 26: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Page 27: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

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

Page 28: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

Eindeutigkeit, Schlüssel und Schlüsselverweise 22. 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>

Page 29: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Eindeutigkeit, Schlüssel und Schlüsselverweise 3

Page 30: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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>

Page 31: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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

Dokumentation und Kommentare

XML 1.0 – Kommentare

annotation-Element documentation appinfo

Fremdattribute

Page 32: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

DTDvs.

W3C XML Schema

Page 33: DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Blüge.

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)