DTD und W3C XML Schema - PowerPoint PPT Presentation

1 / 33
About This Presentation
Title:

DTD und W3C XML Schema

Description:

DTD und W3C XML Schema Seminar XML und Datenbanken Vortrag: Sven Bl ge – PowerPoint PPT presentation

Number of Views:126
Avg rating:3.0/5.0
Slides: 34
Provided by: vna7
Category:
Tags: dtd | w3c | xml | schema | und

less

Transcript and Presenter's Notes

Title: DTD und W3C XML Schema


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

4
Dokumenttyp-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

5
Dokumenttyp-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

6
Element-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

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

8
Element-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

9
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
  • 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

10
Entity-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

11
Externe 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
12
W3C XML Schema
  • Hauptzweck
  • Validierung
  • Dokumentation
  • Nachfolger von DTD
  • XML Schema nutzt XML Notation

13
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.
  • 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

14
Klassifizierung 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
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)
  • 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

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

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

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

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

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

25
Definition 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

26
Schema-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

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

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

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
  • ltxselement name"bibliothek"gt
  • ltxscomplexTypegt
  • .../...
  • lt/xscomplexTypegt
  • ltxskey name"book"gt
  • ltxsselector xpath"book"/gt
  • ltxsfield xpath"isbn"/gt
  • lt/xskeygt
  • lt/xselementgt

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

31
Dokumentation 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

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)
Write a Comment
User Comments (0)
About PowerShow.com