Title: DTD und W3C XML Schema
1DTD und W3C XML Schema
- Seminar XML und DatenbankenVortrag Sven Blüge
2DTD (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
3DTD 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)
- lt!ELEMENT person (name, beruf)gt
- lt!ELEMENT name (vorname, nachname)gt
- lt!ELEMENT vorname (PCDATA)gt
- lt!ELEMENT nachname (PCDATA)gt
- lt!ELEMENT beruf (PCDATA)gt
- Gültiges XML-Dokument
- lt!DOCTYPE person SYSTEM "http//xyz.de/person.dtd"
gt - ltpersongt
- ltberufgtFörsterlt/berufgt
- ltnamegt
- ltvornamegtPeterlt/vornamegt
- ltnachnamegtMustermannlt/nachnamegt
- lt/namegt
- ltberufgtFahrerlt/berufgt
- ltberufgtMechanikerlt/berufgt
- lt/persongt
4Dokumenttyp-Deklaration 1
- Deklaration einer externen DTD
- lt!DOCTYPE person SYSTEM "http//xyz.de/person.dt
d"gt - 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
5Dokumenttyp-Deklaration 2
- DTD kann im XML-Dokument enthalten sein (interne
Deklaration) - lt!DOCTYPE person
- ../..
- gt
- Kombination externer/interner Deklaration
möglich - lt!DOCTYPE person SYSTEM "name.dtd"
- lt!ELEMENT beruf (PCDATA)gt
- lt!ELEMENT person (name, beruf)
- gt
6Element-Deklaration 1
- Syntax
- lt!ELEMENT elementname (inhaltsmodell)gt
- PCDATA
- Ist einfachstes Inhaltsmodell
- Hat keine Kindelemente
- Enthält vom Parser ersetzte Zeichendaten
- lt!ELEMENT telefonnummer (PCDATA)
- einfache Kindelemente
- Enthalten nur einzelne Kindelemente
- lt!ELEMENT fax (telefonnummer)gt
7Element-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
- lt!ELEMENT name (vorname, zweiter_vorname,
nachname)gt - Auswahl
- Auswählbare Elemente werden durch getrennt
- lt!ELEMENT ziffer (null eins zwei drei)gt
- Klammern
- Schachtelung von Auswahl und Folgen möglich
- lt!ELEMENT kreis (punkt, (radius durchmesser))gt
8Element-Deklaration 3
- Gemischter Inhalt
- Enthält Kindelemente und Zeichendaten
- lt!ELEMENT definition (PCDATA, begriff))gt
- 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 - lt!ELEMENT bild EMTPYgt
- Beispiel ltbild quelle"bild.jpg"/gt
- ANY
- Ein als ANY deklariertes Element kann beliebigen
Inhalt haben - Enthaltene Elemente müssen definiert sein
- lt!ELEMENT seite ANYgt
9Attribut-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
- lt!ATTLIST bild
- quelle CDATA REQUIRED
- hoehe CDATA IMPLIED
- breite CDATA "250"
- alt CDATA FIXED "Bild"
- gt
- Entspricht
- lt!ATTLIST bild quelle CDATA REQUIREDgt
- lt!ATTLIST bild hoehe CDATA IMPLIEDgt
- lt!ATTLIST bild breite CDATA "250"gt
- lt!ATTLIST bild alt CDATA FIXED "Bild"gt
10Entity-Deklaration
- Allgemeine Entities
- Vorkommen Dokumenteninhalt
- 5 vordefinierte Entities (lt,gt,,,)
- Deklaration lt!ENTITY baustein "Das ist ein sehr
langer Textbaustein"gt - Nutzung baustein
- Externe geparste allgemeine Entities
- Vorkommen Dokumenteninhalt
- lt!ENTITY baustein2 SYSTEM "http//www.xyz.de/mye
ntities.xml"gt - Referenz baustein2 kann vom Parser durch den
externen Inhalt ersetzt werden - Parameter-Entities
- Vorkommen DTD
- Gruppiert Elemente
- Redefinition externer Entities intern möglich
- lt!ENTITY bilddaten "hoehe, breite, farbtiefe"gt
- lt!ELEMENT bild (bildparameter)gt
11Externe DTD-Teilmengen
- DTDs sind aufteilbar
- Kombination mittels externer Paramter-Entity-Refer
enzen - lt!ENTITY namen SYSTEM "namen.dtd"gt
- namen
- Bedingtes Einfügen
lt!IGNORE lt!ELEMENT name (PCDATA)gt gt lt!INCLUDE lt!ELEMENT name (PCDATA)gt gt
lt!ENTITY namen_einfuegen "INLCUDE"gt lt!namen_einfuegen lt!ELEMENT name (PCDATA)gt gt lt!ENTITY namen_einfuegen "INLCUDE"gt lt!namen_einfuegen lt!ELEMENT name (PCDATA)gt gt
12W3C XML Schema
- Hauptzweck
- Validierung
- Dokumentation
- Nachfolger von DTD
- XML Schema nutzt XML Notation
13XML 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.
- ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
ema"gt - ltxsattribute name"id" type"xsstring"/gt
- ltxselement name"vorname" type"xsstring"
minOccurs"0" maxOccurs"unbounded"/gt - ltxselement name"name" type"xsstring"/gt
- ltxscomplexTypegt
- ltxssequencegt
- ltxselement ref"vorname"gt
- ltxselement name"nachname
type"xsstring"/gt - lt/xssequencegt
- ltxsattribute ref"id"gt
- lt/xscomplexTypegt
- lt/xsschemagt
14Klassifizierung 1Inhaltsmodelle
Leeres Inhaltsmodell ltname vorname"Peter nachname"Mustermann" /gt Komplexes Inhaltsmodell ltnamegt ltvornamegtPeterlt/vornamegt ltnachnamegtMustermannlt/nachnamegt lt/namegt
Einfaches Inhaltsmodell ltnamegtPeter Mutermannlt/namegt lttitle lang"de"gt Auf den Hund gekommen lt/titlegt Gemischtes Inhaltsmodell ltname id"008"gt ltvornamegtPeterlt/vornamegt lebt in Deutschland lt/namegt
Inhaltsmodell Leer Einfach Komplex Gemischt
Kindelemente Nein Nein Ja Ja
Kindtext Nein Ja Nein Ja
15Klassifizierung 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)
- ltnamegt
- Peter Mutermann
- lt/namegt
- Komplexe Typen (complexType)
- lttitle lang"de"gt
- Auf den Hund gekommen
- lt/titlegt
- ltname id"008"gt
- ltvornamegtPeterlt/vornamegt
- lt/namegt
16Elementdefinition
- 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) - xsstring 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 - ltxsschema xmlnsxs"http//www.w3.org/2001/XMLSch
ema"gt - ltxselement name"name" type"xsstring"/gt
- ltxselement name"born" type"xsdate"/gt
- ltxsattribute name"id" type"xsID"/gt
- ltxsattribute name"lang" type"xslanguage"/gt
- lt/xsschemagt
17Typen 1Überblick
18Typen 2primitive Typen
19Typen 3string-ähnliche Typen
20Typen 4Numerische Typen
21Definition 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 -25 - ltxssimpleType name"myInteger"gt
- ltxsrestriction base"xsinteger"gt
- ltxsminInclusive value"-2"/gt
- ltxsmaxExclusive value"5"/gt
- lt/xsrestrictiongt
- lt/xssimpleTypegt
- restiction gibt den Datentyp an, auf den die
neuen Einschränkungen angewendet werden sollen
22Definition 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 xsstring entsteht, indem das an anderer
Stelle definierte Attribut lang hinzugefügt wird. - ltxscomplexType name"titel"gt
- ltxssimpleContentgt
- ltxsextension base"xsstring"gt
- ltxsattribute ref"lang"/gt
- lt/xsextensiongt
- lt/xssimpleContentgt
- lt/xscomplexTypegt
- ltxselement name"titel" type"titel"gt
- Beispiel
- lttitel lang"de"gt
- Auf den Hund gekommen
- lt/titelgt
23Definition 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 xselement enthalten
- Auftretenshäufigkeit von Elementen nicht größer
als 1 - Das Beispiel für sequence ist daher nicht für all
geeignet
- ltxscomplexType name"author"gt
- ltxssequencegt
- ltxselement ref"name"
maxOccurs"unbounded"/gt - ltxselement ref"born"
- minOccurs"1"/gt
- ltxselement ref"dead"
- minOccurs"0"/gt
- lt/xssequencegt
- ltxsattribute ref"id"/gt
- lt/xscomplexTypegt
- ltxselement name"author"
- type"author"gt
24Definition 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 - ltxscomplexType name"author"gt
- ltxschoisegt
- ltxselement ref"name"gt
- ltxssequencegt
- ltxselement ref"first-name"gt
- ltxselement ref"middle-name"
minOccurs"0"gt - ltxselement ref"last-name"gt
- lt/xssequencegt
- lt/xschoisegt
- ltxselement ref"born"gt
- ltxselement ref"dead" minOccurs"0"gt
- lt/xscomplexTypegt
- ltxselement name"author" type"author"gt
25Definition eigener Datentypen 5 komplexe Typen,
group
- Definition Elementgruppe
- ltxsgroup name"name"gt
- ltxschoisegt
- ltxselement ref"name"gt
- ltxssequencegt
- ltxselement ref"first-name"gt
- ltxselement ref"middle-name"
minOccurs"0"gt - ltxselement ref"last-name"gt
- lt/xssequencegt
- lt/xschoisegt
- lt/xsgroupgt
-
- Benutzung
- ltxsgroup ref"name"gt
- 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
- ltxsattributeGroup name"bookAttributes"gt
- ltxsattribute name"id" type "xsID"/gt
- ltxsattribute name"available"
type"xsboolean"/gt - lt/xsattributeGroupgt
- Benutzung
- ltxsattributeGroup ref"bookAttributes"gt
26Schema-InklusionAufteilung eines Schemas
- Schema-Inclusion (include)
- Mehrere Teile werden mittels include in ein
Hauptschema eingebunden - ltxsinclude schemaLocation"eins.xsd"/gt
- 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
27Eindeutigkeit, 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 ltxselement name"ref" type"xsIDREF"
use"requirded"/gt - 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
28Eindeutigkeit, 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. - ltxselement name"bibliothek"gt
- ltxscomplexTypegt
- .../...
- lt/xscomplexTypegt
- ltxsunique name"book"gt
- ltxsselector xpath"book"/gt
- ltxsfield xpath"isbn1"/gt
- ltxsfield xpath"isbn2"/gt
- lt/xsuniquegt
- lt/xselementgt
29Eindeutigkeit, 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 - ltxselement name"bibliothek"gt
- ltxscomplexTypegt
- .../...
- lt/xscomplexTypegt
- ltxskey name"book"gt
- ltxsselector xpath"book"/gt
- ltxsfield xpath"isbn"/gt
- lt/xskeygt
- lt/xselementgt
30Eindeutigkeit, 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 - ltxselement name"bibliothek"gt
- ltxscomplexTypegt
- .../...
- lt/xscomplexTypegt
- ltxskey name"ID"gt
- ltxsselector xpath"book"/gt
- ltxsfield xpath"isbn"/gt
- lt/xskeygt
- ltxskeyref name"IDREF" refer"ID"gt
- ltxsselector xpath"book"/gt
- ltxsfield xpath"isbn"/gt
- lt/xskeyrefgt
- lt/xselementgt
31Dokumentation und Kommentare
- ltxselement name"author" type"authorType"gt
- lt! Beschr. des Autors eines Buches. --gt
- lt/xselementgt
- ltxselement name"author" type"authorType"gt
- ltxsannotationgt
- ltxsdocumentation xmllang"de"gt
- Der Autor eines Buches.
- lt/xsdocumentationgt
- lt/xsannotationgt
- lt/xselementgt
- ltxselement name"author" type"authorType"
- docdoc"Beschr. des Autors eines Buches."
- xmlnsdoc"http//xyz.de/doc"/gt
- XML 1.0 Kommentare
- annotation-Element
- documentation
- appinfo
- Fremdattribute
32DTDvs.W3C XML Schema
33Vorteile 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)