Document Type Definition
deklarieren eine Menge von erlaubten Elementen, andere Elementnamen dürfen nicht verwendet werden
DTDs deklarieren also so etwas wie ein „Vokabular“ des XML-Derivats
DTDs definieren ein content model für jedes Element;
definiert, welche Elemente und/oder Daten in einem Element enthalten sein können
ist so etwas wie eine „Grammatik“ des XML-Derivats
DTDs deklarieren eine Menge von erlaubten Attributen für jedes Element
DTDs sind eine Menge von Deklarationen
Es können auch mehrere (kompatible) DTDs kombiniert werden wodurch Modularisierung ermöglicht wird.
Deklaration von Elementen
<!ELEMENT Name Content>
Content wird mit Content-Modell eingeschränkt:
Text: (#PCDATA) -> Parsed Character Data
genau ein Element: (nameElement); (nameElement1 | nameElement2)
genau zwei Elemente, diese Reihenfolge (nameElement1, nameElement2)
Anzahl der Elemente (Kardinalität) durch Postfix gekennzeichnet
? optional (0 oder 1 Mal)
+ mindestens ein Mal (1, 2, 3, ...)
* beliebig oft (0, 1, 2, 3, ...)
keinen Inhalt <!ELEMENT name EMPTY>
beliebigen Inhalt <!ELEMENT test ANY>
gemischtes Content-Modell <!ELEMENT (#PCDATA | name1 | nameN)*>
Deklaration von Attributen
<!ATTLIST nameElement nameAttribut attributeType attributeValue>
zu attributeType
#REQUIRED: kein default Wert, aber muss vorhanden sein
#IMPLIED kein default Wert, möglicherweise vorhanden
#FIXED: default Wert, der sich nicht verändern lässt
Datentypen
Dokument-Typ: gültiger Inhalt eines gesamten XML-Dokuments
Datentyp: gültiger Inhalt von Elementen und Attributen
Formal repräsentiert ein Datentyp eine Menge von gültigen Werten, den sogenannten Wertebereich
Hierarchie der Datentypen
XML-Schema
XML Schema ist Ausdrucksstärker als DTD (zu jeder DTD kann ein XML Schema erstellt werden aber nicht anders herum)
Vorteile
Es existiert eine Vielzahl von vordefinierten Datentype
Es können eigene Datentypen definiert werden
Keine spezielle Syntax, sondern selbst in XML definiert
Vererbungshierarchien (von Datentypen)
Unterstützung von Namespaces/Namensräumen
Reihenfolgeunabhängige Strukturen einfach zu definieren
XML Schema Kardinalität
XML Schema Deklaration der Element-Struktur
xsd:element – Element wird deklariert xsd:complexType – strukturiert Inhalt xsd:sequence – Sequenz von Elementen
Attribute schränken Elemente ein:
minOccurs: minimale Anzahl der Wiederholungen
maxOccurs maximale Anzahl der Wiederholungen
Standard-Werte für minOccurs, maxOccurs ist jeweils 1; ansonsten “undbounden”
type: Datentyp
<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XML-Schema Deklaration von Attributen
Einschränkung mit “use”, mögliche Werte:
optional – Attribut kann weggelassen werden
required – Attribut muss angegeben werden
prohibited – Attribut darf nicht verwendet werden (!?)
default: Standard-Wert für das Attribut
fixed: Standard-Wert für das Attribut, ein anderer Wert ist nicht möglich
Einfache vs. Komplexe Datentypen
einfache Datentypen (simple types)
beschreiben unstrukturierten Inhalt ohne Elemente oder Attribute
Schema der Schemata definiert 44 einfache Datentypen
eigene einfache Datentypen können definiert werden
komplexe Datentypen (complex types)
beschreiben strukturierten XML-Inhalt mit Elementen oder Attributen, natürlich auch gemischten Inhalt
Elemente mit komplexen Typen können andere Elemente und/oder Attribute beinhalten
XML Schema - Primitive und abgeleitete Datentypen
primitive Datentypen (primitive types)
nicht von anderen Datentypen abgeleitet
vordefiniert
abgeleitete Datentypen (derived types)
auf Basis von anderen Datentypen definiert, z.B. durch Einschränkung oder Erweiterung
vordefiniert, und selbst ableitbar
Zwei Möglichkeiten der Ableitung:
Erweiterung / xsd:extension: Datentyp wird durch zusätzliche Elemente oder Attribute erweitert
Teilmenge: Einschränkung des Wertebereichs eines Datentyps
XML Schema complex Type - Einschränkungen
Für jeden einfachen Datentyp gibt es bestimmte zulässige Einschränkungen (constraining facets)
enumeration: Zählt erlaubte Werte explizit auf
maxExclusive: <
maxInclusive: <=
mixExclusive: >
minInclusive: >=
fractionDigits: maximale Anzahl von Stellen hinter dem Komma
length: Anzahl von Zeichen oder Listenelementen
max/minlength: maximale/minimale Anzahl von Zeichen oder Listenelementen
pattern: Zeichenkette als reguläre Ausdrücke
whiteSpace: legt fest, wie White Space behandelt wird
Last changed5 months ago