Niedrig
XML validieren (DTD, XSD)
Wohlgeformtheit vs. Gültigkeit, DTD vs. XSD.
Warum Priorität „Niedrig"? Selten oder als Randthema (unter 40%). Überblick reicht meist.
Lernziele
- Wohlgeformt und gültig auseinanderhalten
- DTD und XSD vergleichen
- Namespaces und Parser-Typen einordnen
Zwei Validierungs-Ebenen
- Wohlgeformt: genau ein Wurzelelement, korrekt geschachtelt/geschlossen, Attributwerte in Anführungszeichen.
- Gültig (valide): zusätzlich konform zu einem Schema (DTD oder XSD).
Gültig setzt wohlgeformt voraus – nicht umgekehrt.
DTD vs. XSD
| DTD | XSD | |
|---|---|---|
| Syntax | eigene Grammatik | selbst XML |
| Datentypen | nur CDATA / PCDATA | starke Typen (int, date, …) |
| Namespaces | nicht unterstützt | ja |
| Kardinalitäten | einfach (?, +, *) | minOccurs/maxOccurs |
| Wiederverwendung | begrenzt | Restriction / Extension |
xmlbuch.xml
<buch xmlns="http://ap2.de/buch">
<titel>AP2</titel>
<jahr>2026</jahr>
</buch>xmlbuch.xsd (Ausschnitt)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://ap2.de/buch"
xmlns="http://ap2.de/buch"
elementFormDefault="qualified">
<xs:element name="buch">
<xs:complexType><xs:sequence>
<xs:element name="titel" type="xs:string"/>
<xs:element name="jahr" type="xs:gYear"/>
</xs:sequence></xs:complexType>
</xs:element>
</xs:schema>Parser
- DOM: Baum im Speicher, wahlfreier Zugriff – bei großen Dokumenten speicherintensiv.
- SAX: ereignisbasiert, streamend – speichereffizient.
Übungen
Eine AntwortWann ist ein XML-Dokument «gültig»?
Eine AntwortWelcher Vorteil hat XSD gegenüber DTD?