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:
Elementkonstruktor | Ergebnis der Auswertung | |
---|---|---|
mit Leerraumerhaltung | ohne 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> </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   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ück | vor >> |