Namensraumknoten
Namensraumknoten repräsentieren die im jeweiligen Kontext bekannten Namensräume. Der textuelle Wert eines Namensraumknotens ist die zugehörige URI. Der getypte Wert ergibt sich aus dem textuellen Wert durch Wandlung nach xdt:untypedAtomic.
Auch ein Namensraumknoten kann durch einen berechneten Konstruktor erzeugt werden. Dem Schlüsselwort namespace folgt das zugewiesene Präfix und ein Ausdruck in einem Auswertungskontext zur Berechnung der URI des Namensraumes. Ein Knoten für den "default namespace" (ohne Präfix) kann so nicht erzeugt werden.
Namensraumknoten werden auch implizit erzeugt. Jeder Elementknoten erhält für jedes xmlns-Attribut in seinem direkten Elementkonstruktor einen entsprechenden Namensraumknoten als Kind. Hinzu kommen Kinder für alle Namensraumknoten umgebender Elementkonstruktoren. Für jeden weiteren im Elementnamen oder seinen Attributen verwendeten bekannten Namensraum wird ebenfalls ein Kind erzeugt. Außerdem erhält jeder Elementknoten einen Namensraumknoten für den xml-Namensraum.
Auf Namensraumknoten kann man in XQuery allerdings nicht explizit zugreifen.
Knoten für Verarbeitungsanweisungen
Verarbeitungsanweisungen bestehen aus einem Ziel und einem Inhalt. Ihr textueller Wert entspricht dem Inhalt, der getypte Wert dem textuellen Wert.
Eine Verarbeitungsanweisung kann mit einem direkten Konstruktor erzeugt werden, der wiederum die XML-Syntax benutzt:
<?Beispiel dies ist der Inhalt?>
Alternativ kann ein berechneter Konstruktor verwendet werden. Dieser besteht aus dem Schlüsselwort processing-instruction, gefolgt vom Ziel der Verarbeitungsanweisung. Diese kann als ein konstanter QName oder ein Ausdruck in einem Auswertungskontext angegeben werden. Darauf folgt der Inhalt als Ausdruck in einem Auswertungskontext.
Diese Ausdrücke werden jeweils der Atomisierung unterworfen:
processing-instruction Beispiel {"dies ist der Inhalt"}
Kommentarknoten
Ein Kommentarknoten entspricht einem Kommentar in einem XML-Dokument. Der textuelle Wert eines Kommentarknotens besteht aus dem Inhalt des Kommentars, der getypte Wert ebenfalls (als Wert vom Typ xs:string). Auch für Kommentarknoten gibt es einen direkten Konstruktor, der die XML-Syntax benutzt:
<!-- Dies ist ein Kommentar -->
Ebenso gibt es einen berechneten Konstruktor: das Schlüsselwort comment, gefolgt von einem Ausdruck in einem Auswertungskontext.
comment {"Dies ist ein Kommentar"}
Auch hier wird das Ergebnis der Ausdrucksauswertung der Atomisierung unterworfen. Anzumerken ist an dieser Stelle, dass ein Kommentarknoten nicht mit einem XQuery-Kommentar verwechselt werden darf.
Textknoten
Ein Textknoten entspricht dem einfachen Inhalt eines Elementes, und zwar unabhängig von seinem Typ. Für Textknoten gibt es einen direkten Konstruktor, der die CDATA-Syntax aus XML verwendet:
<![CDATA[Dies ist der Inhalt des Textknotens]]>
Dabei werden die Zeichen zwischen [ und ] nicht weiter ausgewertet. Das bedeutet zum Beispiel, dass spitze Klammern in diesem Teil nicht als XML-Markup verstanden werden. Die Notation CDATA bedeutet nicht, dass auch im Ergebnis ein CDATA-Abschnitt auftreten muss. Vielmehr wird hier ein Textknoten erzeugt, dessen spätere Darstellung (Serialisierung) jedoch nicht vorgegeben ist.
Außerdem gibt es einen berechneten Konstruktor, bei dem ein Ausdruck in einem Auswertungskontext dem Schlüsselwort text folgt. Das Ergebnis dieses Ausdrucks wird atomisiert. Entsteht dabei eine leere Sequenz, so wird kein Textknoten erzeugt.
text {"Dies ist der Inhalt des Textknotens"}
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |