Bei dem Editieren von XML-Dokumenten
ist es oft angenehm, Leerraum (White Space; Leerzeichen
(spaces), Tabulatoren, Leerzeilen; innerhalb dieser
Spezifikation mit dem Nicht-Terminal S
bezeichnet) zu verwenden, um das Markup für eine bessere
Lesbarkeit voneinander abzusetzen. Dieser Leerraum soll
üblicherweise beim Versenden des Dokuments nicht erhalten
bleiben. Auf der anderen Seite gibt es häufig signifikanten
Leerraum, der auch beim Versenden erhalten bleiben soll,
beispielsweise in Gedichten und Quellcode.
Ein XML-Prozessor muss stets alle Zeichen in einem Dokument, die nicht zum Markup gehören, an die Anwendung weiterreichen. Ein validierender XML-Prozessor muss die Anwendung außerdem darüber informieren, welche Leerraumzeichen im Inhalt eines Elements stehen.
Ein besonderes Attribut namens
xml:space kann einem Element
zugewiesen werden, um anzuzeigen, dass Leerraum in diesem
Element von Anwendungen erhalten werden soll. In gültigen
Dokumenten muss dieses Attribut, wie jedes andere, deklariert
werden. Bei der Deklaration muss es als Aufzählungstyp,
dessen einzige Werte default
(Vorgabe) und
preserve
(Erhalten) sind, geschrieben werden. Zum
Beispiel:
<!ATTLIST gedicht xml:space (default|preserve) 'preserve'>
Der Wert default
zeigt an, dass die normale
Leerraumbehandlung einer Anwendung für dieses Element
akzeptabel ist. Der Wert preserve
zeigt die Absicht an, dass
Anwendungen sämtlichen Leerraum erhalten. Diese erklärte Absicht gilt für alle
Elemente innerhalb des Elements, für das preserve
angegeben wurde, es sei denn, es ist für ein eingebettetes
Element explizit mit dem Attribut xml:space
überschrieben worden.
Vom Wurzelelement eines beliebigen Dokuments wird angenommen, dass es keine Leerraumbehandlung der Anwendung vorsieht, es sei denn, es gibt einen Wert für dieses Attribut vor — oder das Attribut ist mit einem Vorgabewert deklariert.