• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

Leerraum in Elementkonstruktoren

Die Behandlung von Leerraum in Elementkonstruktoren wird durch den Wert von xmlspace aus dem XQuery-Prolog gesteuert. Wenn nicht explizit definiert ist, dass Leerraum erhalten bleiben muss, wird begrenzender Leerraum ("boundary white space") entfernt, also Leerraum, der lediglich Elementgrenzen ("start tag" und "end tag") und/oder Auswertungskontexte voneinander trennt. Anderer Leerraum bleibt immer erhalten. Auch Leerraum, der in Form von Zeichenreferenzen (zum Beispiel  ) angegeben ist, bleibt erhalten. Der auf der Vorderseite gezeigte Elementkonstruktor ist dann äquivalent zu:

<Freiwilliger ID="vol_01"><!-- eingefügt 1.1.2004--><Name><Vorname>Daniela</Vorname><Nachname>Baumann</Nachname></Name><Adresse><Straße>Potsdamer Straße</Straße><Hausnr>62</Hausnr><Stadt>Berlin</Stadt><Staat>D</Staat><PLZ>14145</PLZ></Adresse><Geburtsdatum>1982-07-23</Geburtsdatum><Telefon>+49 30-234626</Telefon><Nummer>07</Nummer><Fähigkeit>Altenbetreuung</Fähigkeit><Berufsklasse>Pfleger</Berufsklasse></Freiwilliger>

Die folgende Tabelle zeigt einige Beispiele für Ergebnisse von Elementkonstruktoren mit und ohne Erhaltung von begrenzendem Leerraum:

ElementkonstruktorErgebnis der Auswertung
mit Leerraumerhaltungohne Leerraumerhaltung
<X y="{1}   {2}"/><X y="1   2"/> <X y="12"/>
<X>      </X><X>     </X><X></X>
<X y="{1}  2"/><X y="1   2"/><X y="1   2"/>
<X>  1  {"Text"}  </X> <X>  1  "Text"  </X><X>  1  "Text"</X>
<X>&#20;     </X><X>     </X><X>     </X>
<X>{"    "}</X><X>   </X><X>   </X>
<X><![CDATA[    ]]></X><X>   </X><X>   </X>

Tab. Beispiele zur Leerraumbehandlung in Elementkonstruktoren

Im ersten und zweiten Beispiel stehen Leerzeichen zwischen Auswertungskontexten bzw. Tags. Diese gelten als begrenzender Leerraum. Im Gegensatz dazu handelt es sich beim dritten Beispiel nicht um begrenzenden Leerraum, weil kein Auswertungs-kontext, sondern ein einfaches Zeichen folgt.
Das vierte Beispiel zeigt analog, dass auch Leerzeichen am Anfang eines Elementkonstruktors immer erhalten bleiben, wenn kein Ausdruck, sondern ein Wert folgt. Im fünften Beispiel sieht man, dass die Zeichenreferenz &#x20; für ein Leerzeichen ebenfalls bewirkt, dass kein begrenzender Leerraum angenommen wird. Im sechsten und siebten Beispiel steht der Leerraum innerhalb eines Ausdrucks bzw. CDATA-Konstruktors und bleibt daher erhalten.

 

Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)

<< zurückvor >>