Dokumentknoten
Ein Dokumentknoten repräsentiert ein XML-Dokument. XQuery hat einen etwas weiteren Begriff von einem XML-Dokument als die XML-Spezifikation. So ist nicht gefordert, dass es genau einen Elementknoten als Kind des Dokumentknotens gibt. Der textuelle Wert eines Dokumentknotens ergibt sich aus der Verkettung der textuellen Werte aller Textknoten, die Nachfolger des Dokumentknotens sind.
Ein Dokumentknoten kann in XQuery mit einem berechneten Konstruktor der Form document {Expr} erzeugt werden:
document {<Arzt>Emil Müller</Arzt>}
Die Knoten, die als Kinder dieses neuen Dokumentknotens angefügt werden, verlieren dabei jegliche Typinformation, d. h., ihnen werden die Typen xs:anyType (für Elementknoten) und xs:anySimpleType (für Attributknoten) zugewiesen. Es wird nicht erzwungen, dass ein Dokument gemäß XML 1.0 entsteht, welches zum Beispiel genau ein Wurzelelement besitzt.
Attributknoten
Attributknoten entsprechen den Attributen von XML-Elementen. Der textuelle Wert eines solchen Knotens ergibt sich aus dem Attributwert, gewandelt nach xs:string. Der getypte Wert des Attributknotens wird aus dem textuellen Wert durch Validierung gegen ein Schema (und damit Zuweisung des dort definierten Typs) gewonnen.
Einen Attributknoten kann man über einen berechneten Konstruktor erzeugen, bei dem auf das Schlüsselwort attribute der Name des Attributs (als konstanter QName oder als Ausdruck in einem Auswertungskontext) und sein Wert (in einem Auswertungskontext) folgen. Atomisierung wird jeweils auf die Werte in den Auswertungskontexten angewandt. Der Wert wird immer nach xs:string gewandelt, muss also nicht dem Typ des Attributs entsprechen. Der folgende Aufruf des berechneten Attributkonstruktors erzeugt ein Attribut, dessen Name sich aus dem Wert der Variablen $a ergibt und dessen Wert 42 ist:
attribute {$a} {6*7}
Ein solcher Konstruktor kann sowohl in direkten als auch in berechneten Elementkonstruktoren verwendet werden, um Attributknoten zu dem jeweiligen Element zu erzeugen. Zum Beispiel liefert
<Gehalt>{attribute Währung {"€"}, "10000"}</Gehalt>
das Element <Gehalt Währung="€">10000</Gehalt>. Äquivalent hätte man schreiben können
element Gehalt {attribute Währung {"€"}, "10000"}
oder
<Gehalt Währung="€">10000</Gehalt>
Attributknoten sind von Namensraumknoten verschieden. Daraus folgt, dass der Name eines Attributes nicht xmlns sein darf oder mit xmlns: beginnen darf.
Quelle: "XQuery – Grundlagen und fortgeschrittene Methoden", dpunkt-Verlag, Heidelberg (2004)
<< zurück | vor >> |