# Über die Behandlung von Leerzeichen

Amaya entfernt bedeutungslose Leerzeichen (white spaces) wenn ein Dokument geladen wird, es sei denn diese müssen explizit erhalten werden. Dies gilt bei XHTML-, MathML-, und SVG-Dokumenten und auch bei HTML-Dokumenten, welche MathML- oder SVG-Elemente enthalten.

Folgende Leerzeichen werden als bedeutungslos erachtet:

- Zeilenendezeichen `(hex 0D` und/oder `hex 0A`),
- TAB-Zeichen (`hex 09`),
- Leerzeichen hinter dem Start-Tag eines Elements,
- Leezeichen vor dem Ende-Tag eines Elements,
- aufeinanderfolgende Leerzeichen (werden durch ein Leerzeichen ersetzt).

Um alle Leerzeichen für ein Element zu bewahren, sollte man das Attribut `xml:space` oder das Element `pre` (nur in XHTML gültig) verwenden. Die möglichen Werte des Attributs `xml:space` sind: `default` und `preserve`.

- Der Wert `default` bedeutet, dass die fehlwertmäßige Behandlung von Leerzeichen einer Applikation für diese Elemente verwendet werden soll. In Amaya ist diese fehlwertmäßige Behandlung das Entfernen bedeutungsloser Leerzeichen für alle unterstützten DTDs.
- Der Wert `preserve` zeigt an, dass Applikationen all diese Zeichen unangetastet lassen mussen, mit Ausnahme des ersten Zeichens, welches direkt dem Ende-Tag eines Elementes folgt und am Ende einer Zeile steht.

Das Attribut `xml:space` wird auf den gesamten Inhalt des Elements, in dem es spezifiziert wurde angewendet, also auch auf eingebettete Elemente. Das gilt solange, bis dort dieses Verhalten durch ein anderes Attrribut überschrieben wird.

In der DTD von XHTML erzeugt das Element `pre` das gleiche Verhalten wie das Attribut `xml:space` mit dem Wert `preserve`.

Amaya wendet die Behandlung von Leerzeichen an, wenn ein Dokument geladen wird und nicht während man das Dokument editiert. Eine Konsequenz daraus ist, dass diese sichtbar sind und mit abgespeichert werden, aber beim nächsten Laden des Dokuments verschwinden. Beispiel: der folgende Quellcode

`<p>Amaya entfernt<strong >bedeutungslose Leerzeichen< /strong>(white spaces) wenn ein...</p>`

erscheint während der Edition folgendermaßen:

`Amaya entfernt bedeutungslose Leerzeichen (white spaces) wenn ein...`

Der Text wird mit dieser Syntax gespeichert. Wenn das Dokument jedoch das nächste Mal geladen wird, dann sieht er so aus:

`Amaya entfernt` `bedeutungslose Leerzeichen``(white spaces) wenn ein...`

weil die führenden und nachfolgenden Leerzeichen des Elements `<strong>` als bedeutungslos angesehen und entfernt werden.

Der korrekte Quellcode würde so aussehen:

`<p>Amaya entfernt <strong>bedeutungslose Leerzeichen</strong> (white spaces) wenn ein...</p>`