Nach einer einführenden Übersicht über die einzelnen
Mitglieder der XML-Sprachfamilie werden in diesem Abschnitt
die grundlegenden Strukturelemente der XML und des XML
Information Set eingeführt.
Sie erfahren, welche Strukturelemente es in der XML gibt und
was die Wohlgeformtheit eines XML-Dokuments bedeutet.
Eine Anwendung der XML wird XML-Sprache genannt. Sie
besteht aus einem Vokabular, das aus Symbolen und
der ihnen zugewiesenen Bedeutung (Semantik) gebildet
wird. Das Vokabular wird durch Regeln ergänzt, die
die Kombination der Elemente aus dem Vokabular
steuern: die grammatikalische Struktur sowie die
Gültigkeitsregeln für den Inhalt (z.B. Datentypen).
Eine Anwendung einer neu geschaffenen XML-Sprache
L
werden als XML-Dokumente, auch
L
-Dokumente bezeichnet.

XML-Dokument
Ein XML-Dokument ist ein Datenstrom (der nicht
zwingend als Datei vorliegen muß), der den
Strukturierungsprinzipien (=Wohlgeformtheit) der
Extensible Markup Language genügt.
XML Information Set
Die Spezifikation des XML Information Sets definiert
die zentralen Begriffe der XML. Es setzt diese
Begriffe miteinander in Beziehung und definiert so
unabhängig von der Syntax die Struktur eines
XML-Dokumentes.
XML-Prozessor
Ein XML-Prozessor ist eine maschinelle Komponente
(typischerweise: Software), die zum Lesen, Speichern
und Verarbeiten eines XML-Dokuments eingesetzt wird.
Er erlaubt Zugriff auf den Inhalt und die Struktur
des XML-Dokuments.
Das folgende Listing zeigt ein einfaches XML-Dokument mit den am meisten verwendeten Sprachelementen der XML: Element, Attribut, Text.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> <Semester>WS 2008/2009</Semester> Montag, 08:00h - 09:30h <Praktikum>Seminar</Praktikum> </Vorlesung>
Für jedes XML-Dokument gibt es ein abstraktes
Information Set (auch kurz als "Infoset"
bezeichnet). In ihm sind alle Informationselemente
in Form einer Baumstruktur enthalten.
Die untenstehende Abbildung gibt einen Auszug der
Knoten aus dem Information Set unseres ersten
XML-Dokuments in einem UML-Diagramm wieder. Die
Knoten sind als Objekte, ihre Eigenschaften als
Attribute dargestellt.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> <Semester>WS 2008/2009</Semester> Montag, 08:00h - 09:30h <Praktikum>Seminar</Praktikum> </Vorlesung>
Im folgenden Beispiel ist der Inhalt des ersten
XML-Dokuments als einfache XHTML Seite dargestellt.
Sprachelemente der XHTML: Titel, Überschriften 1.
und 2. Grades, Absatz.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Vorlesung i3.DATA (XML)</title> </head> <body> <h>Fachhochschule Augsburg</h> <section> <h>Studiengang IAM</h> <h>3. Semester</h> <h>Wintersemester 2008/2009</h> <p>Montag, 08:00h-09:30h, Raum I102</p> </section> </body> </html>
Element Information Item
, nämlich das Wurzelelement des
Dokuments (auch
Document Element
genannt).
Processing Instruction Information
Item
s, für alle Processing Instructions, die
außerhalb des Wurzelelements definiert
sind. Processing Instructions geben
einem XML-Prozessor Informationen zur
Verarbeitung des Dokuments.
Comment Information Item
s für Kommentare außerhalb des
Wurzelelements.
Element Information Item
Notation Information Items
, die in einer DTD des Dokuments (sofern
vorhanden) definiert wurden.
Unparsed Entity Information Items
. Ein Parser ist ein Programm, das eine
Syntaxanalyse eines Eingabestroms ausführt.
Entities kann man einfach umschreiben als
"Kürzel", diese Kürzel werden vom Parser
dann durch einen definierten Wert ersetzt.
Nicht geparste Entitäten sind Informationen,
die nicht durch den Parser analysiert
werden, da sie üblicherweise nicht im
XML-Format vorliegen (z.B. Binärdaten).
ISO-8859-1
,
ISO-2022-JP
,
UTF-8
), in der das Dokument gehalten ist (zur
Liste international standardisierter
Zeichenkodierungen
). Der Wert wird aus dem XML-Prolog des
Dokuments übernommen.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
1.0
anzugeben, für XML 1.1 entsprechend
1.1
.
x-
im Namen kenntlich gemacht werden.
Das Document Information Item des ersten XHTML Beispiels beinhaltet folgende Informationen
html
als Wurzelelement des Dokuments
http://www.barbara-zengler.de/vorlesung/erstes-XML-dokument-html-beispiel.xml
.
UTF-8
no
, denn es gibt eine DTD zu diesem Dokument, die
eventuell Vorbelegungen für Attributwerte
definiert.
1.0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Vorlesung i3.DATA (XML)</title> </head> <body> <h>Fachhochschule Augsburg</h> <section> <h>Studiengang IAM</h> <h>3. Semester</h> <h>Wintersemester 2008/2009</h> <p>Montag, 08:00h-09:30h, Raum I102</p> </section> </body> </html>
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
Prolog
[22] prolog ::= XMLDecl Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
[24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
[25] Eq ::= S? '=' S?
[26] VersionNum ::= '1.1'
[27] Misc ::= Comment | PI | S
[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )
[81] EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* /* Encoding name contains only Latin characters */
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
[3] S ::= (#x20 | #x9 | #xD | #xA)+A*
: Null oder mehrere Vorkommen von A
A?
: A oder nichts (optional A)
A|B
: A oder B
A+
: Ein oder mehrere Vorkommen von A
Nachstehende Tabelle zeigt einen Überblick über den
Platzbedarf des Zeichens
A
in den verschiedenen Codierungsformaten, sowie die
Größe der Beispieldate in Byte
| Codierung | Bitbreite | Binärdarstellung | Größe der Beispieldatei in Byte | Bemerkung |
|---|---|---|---|---|
| erweitertes ASCII (Latin-1), ISO-8859-1 | 8 |
0100 0001
|
266 |
(
encoding="ISO-8859-1"
)
|
| UTF-8 | >=8 |
0100 0001
|
266 |
(
encoding="UTF-8"
) keine Byte Order Mark
|
| UTF-16 | >=16 |
0100 0001 0000 0000
|
532 |
(
encoding="UTF-16"
) keine Byte Order Mark
|
| UTF-32 | 32 |
0100 0001 0000 0000 0000 0000 0000 0000
|
1.064 |
(
encoding="UTF-32"
) keine Byte Order Mark
|
Die Nachfolgende Tabelle zeigt die Anwendung der UTF-8 Kodierung
| Unicode-Bereich | Bitbelegung |
|---|---|
U-00000000 - U-0000007F
:
|
0xxxxxxx
|
U-00000080 - U-000007FF
:
|
110xxxxx 10xxxxxx
|
U-00000800 - U-0000FFFF
:
|
1110xxxx 10xxxxxx 10xxxxxx
|
U-00010000 - U-001FFFFF
:
|
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
U-00200000 - U-03FFFFFF
:
|
111110xx 10xxxxxx 10xxxxxx 10xxxxxx
10xxxxxx
|
U-04000000 - U-7FFFFFFF
:
|
1111110x 10xxxxxx 10xxxxxx 10xxxxxx
10xxxxxx 10xxxxxx
|
ISO-8859-1
(latin-1) eingebürgert. Problem: Dieser
Zeichensatz unterstützt nicht das Euro-Symbol.
Erst eine aktualisierte Version des
Zeichensatzes mit dem Namen
ISO-8859-1
hat das Eurozeichen mit an Bord.
Auf dieser Seite sehen Sie ein arabisches Dokument, das die unterschiedlichen Dateigrößen je nach gewähltem Codierungsformat noch einmal veranschaulichen soll.

Document Information Item
, es entspricht dem Wurzelknoten des Dokuments.
Element Information Item
s eines Dokuments kann zugegriffen werden, indem
rekursiv die
Kindknoten
besucht werden.
Attribute Information Item
s, eines für jede Namensraumdeklaration
dieses Elements.
Namespace Information Items
für jeden Namensraum, der für das aktuelle
Element gültig ist.
Document Information Item
oder
Element Information Item
, in dessen
Kindknoten
das aktuelle Element enthalten ist.
Die Listings zeigen Elemente aus unseren Beispieldokumenten.
<Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang>
<h>Fachhochschule Augsburg</h> <section> <h>Studiengang IAM</h> <h>3. Semester</h> <h>Wintersemester 2008/2009</h> <p>Montag, 08:00h-09:30h, Raum I102</p> </section>
<Pflichtfach/>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> <Semester>WS 2008/2009</Semester> Montag, 08:00h - 09:30h <Praktikum>Seminar</Praktikum> </Vorlesung>
Studiengang
beinhaltet folgende Informationen:
IAM
.
semester
.
http://www.barbara-zengler.de/vorlesung/erstes-XML-dokument.xml
Vorlesung
.
Grammatik des Start-Tags:
[40] STag ::= '<' Name (S Attribute)* S? '>' [41] Attribute ::= Name Eq AttValue
Grammatik des Ende-Tags:
[42] ETag ::= '</' Name S? '>'
Grammatik der Elementnamen:
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] [4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] [5] Name ::= NameStartChar (NameChar)* [6] Names ::= Name (#x20 Name)* [7] Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)*
Zur Verdeutlichung der Sonderstellung des Doppelpunkts ist hier ein Beispiel für ein Element mit deklarierten Namensraum aufgeführt:
<?xml version="1.1" encoding="UTF-8"?>
<Beispiel>
<myNS:aParent xmlns:myNS="example.com">
<myNS:anElement/>
</myNS:aParent>
</Beispiel>aParent
wird der Namensraum
example.com
definiert und dem Kürzel
myNS
zugewiesen.
anElement
ergibt sich hiermit aus:
local name: aElement
namespace URI: example.com
prefix: myNS
Oftmals werden die Begriffe Tag und Element synonym verwendet. Dies ist jedoch nicht korrekt!
Ein
Tag
drückt lediglich den Namen eines Elements aus und
liefert damit Information, die die Natur des
Elements beschreibt. Dies kann durch beliebige
erlaubte Zeichenketten geschehen, meistens trifft
man jedoch sogenannte
sprechende Tags
an.
Ein Tag hat im Gegensatz zu einem Element keine
Eltern- oder Kindknoten, etc. Es ist nur ein
Bezeichner.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> <Semester>WS 2008/2009</Semester> Montag, 08:00h - 09:30h <Praktikum>Seminar</Praktikum> </Vorlesung>
eingestreuter Freitextist möglich:
Semistrukturierung
Hochschule
und
Titel
Vorlesung
mischt strukturierten Inhalt (Kindelemente) und
unstrukturierte Information (Text
Montag, 15:40h - 18:50h
)
semester="3"
)
Attribute Information Item
mit folgenden Eigenschaften:
ID
,
IDREF
,
IDREFS
,
ENTITY
,
ENTITIES
,
NMTOKEN
,
NMTOKENS
,
NOTATION
,
CDATA
, und
ENUMERATION
IDREF(S)
,
ENTITY
,
ENTITIES
oder
NOTATION
), so enthält diese Eigenschaft eine
Verweisliste auf alle Auftreten des
Attributwertes
Character Information Item
mit folgenden Eigenschaften dargestellt:
white spaceZeichen darstellt, das laut DTD als Elementinhalt
erhaltenwerden soll. Whitespace-Zeichen werden oft verwendet, um ein XML-Dokument visuell besser zu strukturieren. Wenn die DTD keine derartige Deklaration beinhaltet, oder keine DTD zum Dokument existiert, so bestitzt diese Eigenschaft keinen Wert.
Im Folgenden ist zum besseren Verständnis nochmals unser Beispieldokument in der Zusammenschau mit seinem Information Set aufgeführt.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> <Semester>WS 2008/2009</Semester> Montag, 08:00h - 09:30h <Praktikum>Seminar</Praktikum> </Vorlesung>

Eine Reihe von Zeichen dürfen nicht als Text in einem XML-Dokument vorkommen, weil sie als Metasymbole der XML selbst dienen. Für diese Zeichen gibt es vordefinierte sogenannte Fluchtsymbole (escape characters), die stattdessen verwendet werden können ( Nachlesen in XML-Spezifikation ). XML-Prozessoren berücksichtigen diese Symbole und geben sie in der korrekten Darstellung an die Applikation weiter.
| Entitätsreferenz | Ausgedrücktes Zeichen |
|---|---|
&
|
&
|
<
|
<
|
>
|
>
|
'
|
'
|
"
|
"
|
--
)
<
oder
'
vorkommen.
Grammatik für XML-Kommentare
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'Beispiel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <!-- Dies ist ein gültiger Kommentar --> <!-- Dieser Kommentar - und auch der Folgende - sind auch gültig!--> <!-- <Hochschule>Fachhochschule Augsburg</Hochschule> <Studiengang semester="3">IAM</Studiengang> <Titel>XML</Titel> --> <!-- Aber jetzt wird es kritisch. Dies -- ist KEIN gültiger Kommentar! --> <!-- Dies ist ebenfalls ungültig ---> <!-- Und dies hier <!-- erst recht --> --> </Vorlesung>
Eigenschaften des Comment Information Item
Grammatik für DTDs
[1] document ::= ( prolog element Misc* ) - ( Char* RestrictedChar Char* )
[22] prolog ::= XMLDecl Misc* (doctypedecl Misc*)?
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
[28a] DeclSep ::= PEReference | S
[28b] intSubset ::= (markupdecl | DeclSep)*
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | CommentBeispiel
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE someContent SYSTEM "abc.dtd"> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <einErlaubtesElement/>
n
)
Das DTD Information Item enthält all die Information, die in einem XML-Dokument über die DTD verfügbar ist:
Für jeden Namensraum, der in einem XML-Dokument definiert wird, existiert ein Namespace Declaration Information Item mit folgenden Eigenschaften:
xyz.gif
).
Im folgenden XML-Dokument sehen Sie ein Beispieldokument mit Namensräumen.
<?xml version="1.0" encoding="UTF-8"?>
<wurzelelement>
<elementA>...</elementA>
<elementB xmlns="http://www.fh-augsburg.de">...</elementB>
<elementC xmlns:abc="http://www.example.com">
...
<abc:elementD/>
</elementC>
</wurzelelement>elementB
wird der sogenannte
Vorgabenamensraum
mit dem Namensraum
http://www.fh-augsburg.de
überschrieben.
elementB
befindet sich damit automatisch in diesem
Namensraum.
elementC
wird der Namensraum
http://www.example.com
dem Kürzel
abc
zugewiesen. Das Element wird diesem Namensraum
jedoch nicht zugeordnet.
elementD
kenntdie Namensraumdeklarationen seines Elternteils. Es wird dem Namensraum
http://www.example.com
zugewiesen, indem das Präfix dem Elementnamen
(getrennt durch
:
) vorangestellt wird.
Nachfolgend sehen Sie erneut unser Beispiel mit einer Auflistung der Namensräume für jedes Element.
<?xml version="1.0" encoding="UTF-8"?>
<wurzelelement>
<elementA>...</elementA>
<elementB xmlns="http://www.fh-augsburg.de">...</elementB>
<elementC xmlns:abc="http://www.example.com">
...
<abc:elementD/>
</elementC>
</wurzelelement>| Elementname | Namensraum |
|---|---|
wurzelelement
|
(leerer Namensraum) |
elementA
|
(leerer Namensraum) |
elementB
|
http://www.fh-augsburg.de
|
elementC
|
(leerer Namensraum) |
elementD
|
http://www.example.com
|
XML
ist in sämtlichen Variationen hiervon
ausgeschlossen.
Grammatik für Processing Instructions
[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))Beispiel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Vorlesung> <Pflichtfach/> <?System1 a="3"?> ... <Praktikum>Seminar</Praktikum> </Vorlesung>
XML
als Präfix für einen Bezeichner verwenden, da dies
nicht verboten wird. Dies ist jedoch nicht zu
empfehlen.
Infoset-Eigenschaften eines Processing Instruction Information Item
Beispiel
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE someContent [
<!NOTATION isoDate SYSTEM "http://www.iso.ch/markete/8601.pdf">
<!NOTATION gif PUBLIC
"-//Compuserve Information Services//NOTATION Graphics Interchange
Format//EN">
<!NOTATION hex SYSTEM "hexEditor.exe">
<!ELEMENT someContent (#PCDATA)>
<!ATTLIST someContent format NOTATION (hex) #IMPLIED> ]>
<someContent format="hex">4C 65 74 20 61 6C 6C 20 68 6F 70 65 20 61
62 61 6E 64 6F 6E 2C 20 79 65 20 77 68 6F 20 6D 61 79 20 65 6E 74
65 72 20 68 65 72 65 21</someContent>isoDate
,
gif
und
hex
.
hex
-Notation wird im Dokument verwendet.
gif
stellt hier nur eine weltweit eindeutige
Benennung dar.
Infoset-Eigenschaften eines Notation Information Item
&
,
<
,
>
,
'
,
"
) verwendet wurde
Grammatik für Unexpanded Entity References
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>' [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?) [9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'" [76] NDataDecl ::= S 'NDATA' S Name
Beispiel
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE someContent [ <!ELEMENT someContent ANY> <!ENTITY entA "xyz"> <!ENTITY entB SYSTEM "http://www.barbara-zengler.de/vorlesung/toc.html"> <!ENTITY entC PUBLIC "-//FHA//Symbol//DE" "file://symbols"> ]> <someContent> &entA; &entB; &entC; </someContent>
&
) und abschließendem Strichpunkt (
;
)
entA
ist eine interne Entität und wird durch die
Zeichen
xyz
ersetzt
entB
und
entC
sind Referenzen auf externe Ressourcen.
entC
definiert darüberhinaus, daß es eine unter dem
Namen
-//FHA//Symbol//DE
öffentlich bekannte Quelle (
file://symbols
) referenziert.
Solange die Entitätsreferenzen noch nicht durch den
Prozessor ersetzt (=expandiert) sind, liegen sie im
Information Set als
Unexpanded Entity Reference Information Item
vor. Es hat folgende Eigenschaften:
Die Grammatik für ungeprüfte Entitätsreferenzen ist Teil der Grammatik für Unexpanded Entity References (hier erneut aufgeführt).
[71] GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>' [4] NameChar ::= Letter | Digit | '.' | '-' | '_' | ':' | CombiningChar | Extender [73] EntityDef ::= EntityValue | (ExternalID NDataDecl?) [9] EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"' | "'" ([^%&'] | PEReference | Reference)* "'" [76] NDataDecl ::= S 'NDATA' S Name
Beispiel
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE someContent [ <!ELEMENT someContent ANY> <!NOTATION gif PUBLIC "-//Compuserve Information Services//NOTATION Graphics Interchange Format//EN"> <!ENTITY entA SYSTEM "xyz.gif" NDATA gif> ]> <someContent> &entA; </someContent>
gif
definiert.
entA
verwendet diese Notation und deklariert sie als
Referenz auf den nicht zu prüfenden Inhalt (
NDATA
für Non-Parsed-Data) der Ressource
xyz.gif
someContent
wird die Entitätsreferenz
entA
verwendet. An dieser Stelle wird demnach die
Grafikdatei in das XML-Dokument aufgenommen.
Für jede nicht geprüfte Entität eines XML-Dokuments gibt es ein Unparsed Entity Reference Information Item . Es hat folgende Eigenschaften:
xyz.gif
).
gif
).

Ein XML-Dokument, das den Prinzipien zur Strukturierung aus dem Information Set genügt, ist ein wohlgeformtes Dokument. Insbesondere genügt es folgenden 10 Regeln:
<
und
&
nicht enhalten.
Das folgende Beispiel zeigt ein nicht wohlgeformtes XML-Dokument, das mehreren Anforderungen nicht genügt.
<?xml version="1.0"?> <root> <elementA att=a oder b> <elementB> if a<b ==> c </elementA> <elementC att1="42" att1="3.14"> <elementD <?do-something?> > </elementC> </elementD> <!---- dies ist nicht erlaubt ----> </root>
<
verwendet werden müssen.
elementB
vorhanden.
elementC
kommt der Attributname
att1
zweimal vor.
elementD
steht eine dort nicht zugelassene Processing
Instruction.
elementC
und
elementD
sind nicht sauber geschachtelt.