Der Element-Name-Teil eines Elementkonstruktors benötigt einen xs:QName
, um den Elementnamen zu erzeugen. Wenn ihm ein String übergeben wird, wandelt er ihn in einen QName um, als ob Sie `xs:QName('my-element-name')` aufgerufen hätten.
Daher müssen Sie alle Regeln befolgen, die Sie befolgen würden, als ob Sie einen expliziten xs:QName()
-Konstruktor dort hätten. Das bedeutet, wenn Sie einen Namensraumprefix verwenden (zum Beispiel if:
), muss es möglich sein, diesen Namensraum im statischen Kontext aufzulösen.
Das einfachste, was Sie tun können, ist einfach Ihren if:
-Namensraum in Ihrem Prolog zu deklarieren (wie Sie vermutlich Ihren cp:
-Namensraum deklariert haben):
declare namespace if = "http://example.org/if";
element {fn:concat('if:GICS','1234') } {}
(: produziert normalerweise :)
Wenn Sie dies nicht tun möchten, können Sie einen QName explizit mit der fn:QName()
-Funktion und dem vollen Namensraum für if:
erstellen. (Hinweis: *fn:*QName
ist anders als *xs:*QName
!)
element {fn:QName('http://example.org/if', fn:concat('GICS', '1234'))} {}
(: produziert normalerweise :)
Wenn Sie den verwendeten Präfix steuern möchten, können Sie 'if:' im zweiten Argument einschließen:
element {fn:QName('http://example.org/if', fn:concat('if:GICS','1234'))} {}
(: produziert :)
Beachten Sie, dass genau welchen Präfix Sie in Ihrer XML-Ausgabe erhalten, je nach XQuery-Processor und der Struktur des XML, das Sie erstellen, variieren kann, aber Sie erhalten immer den entsprechenden XML-Infosatz.