Druck-Version
Deutsch Nederlands English
Inhaltsverzeichnis
Teile: Teil: XML Teil: PHP Quellenverzeichnis
Pfad: > Teil: XML > Strukturelle Grundlagen
Benachbarte Abschnitte: Ein erstes Beispiel XML-Dokumentenaufbau Wohlgeformte Dokumente Syntaktische Konstrukte Logische Struktur Namensräume Document Type Definitions
1.2.3. Wohlgeformte Dokumente

Als wohlgeformtes Dokument wird ein textartiges Objekt bezeichnet, wenn dessen Inhalt folgenden Anforderungen genügt:

  • Das XML-Dokument nutzt eine DTD, oder enthält die Deklaration standalone="yes".

  • Zu jedem Start-Tag existiert genau ein End-Tag (Bei leeren Elementen können diese zu einem speziellen Tag zusammenfallen).

  • Die Elemente des Dokuments sind korrekt verschachtelt, d.h. die einzelnen Elemente überlappen einander nicht.

  • Das Dokument enthält genau ein Wurzelelement.

  • Alle Attributwerte sind in einfachen oder doppelten Anführungszeichen eingeschlossen.

  • Kein Start-Tag (oder Tag der eines leeren Elements) enthält zwei oder mehr Attribute desselben Namens.

  • Keine Kommentare oder Processing Instructions innerhalb von Tags.

  • Kommentare beginnen und enden mit genau zwei Bindestrichen.

  • Die Sonderzeichen < und & treten nicht innerhalb von Elementinhalten oder Attributwerten auf.

Nachfolgend ein Beispieldokument, welches in vielerlei Hinsicht gegen die Anforderungen eines wohlgeformten Dokuments verstößt.

Beispiel 2: Ein nicht wohlgeformtes Dokument
	<?xml version="1.0"?> 
	<root> 
		<elementA att=a oder b> 
			<elementB> iff a<b ==> ... 
		</elementA> 
		<elementC att1="42" att1="3.14"> 
			<elementD <?do-something?> > 
		</elementC> 
			</elementD> 
	<!---- dies ist nicht erlaubt ----> 
</root> 

Im Einzelnen sind die Fehler folgende:

  • In Zeile 8 findet sich ein nicht in erforderlichen Anführungszeichen eingeschlossener Attributwert.

  • Der textuelle Elementinhalte des in Zeile 9 geöffneten Elements elementB enthält ein öffnendes Winkelklammersymbol, welches um Fehler während des Einlesevorgangs zu vermeiden durch die alternative Zeichensequenz &lt; hätte ersetzt werden müssen. Darüber hinaus fehlt das korrekte schließende Tag.

  • Innerhalb des Elements elementC der Zeile 11 wird zweifach ein identisch benanntes Attribut definiert.

  • Im öffnenden Tag des in Zeile 12 definierten Elements elementD findet sich eine - dort nicht zugelassene - Processing Instruction.

  • Die Elementgrenzen der Elemente elementC und elementD überlappen sich.

  • Der in Zeile 15 plazierte Kommentar wird nicht durch die erforderlichen genau zwei Bindestriche eingegrenzt.