的元素构造的元素名称的一部分需要一个xs:QName
生产要素名称。如果提供了一个字符串,它会将它强制转换为QName,就像您调用了`xs:QName('my-element-name')一样。
因此,你必须遵守所有,如果你在那里有一个明确的xs:QName()
构造函数,你会遵守规则。这意味着如果您使用的是名称空间前缀(如if:
),则必须可以在静态上下文中解析该名称空间。
你可以做最简单的事情是简单地宣布你if:
命名空间在你的序言(如想必你宣布你的cp:
命名空间):
declare namespace if = "http://example.org/if";
element {fn:concat('if:GICS','1234') } {}
(: usually produces <if:GICS1234 xmlns:if="http://example.org/if"/> :)
如果你不想这样做,你可以使用fn:QName()
函数和if:
的完整名称空间明确构建一个QName。 (注意:*fn:*QName
不同于*xs:*QName
!)
element {fn:QName('http://example.org/if', fn:concat('GICS', '1234'))} {}
(: usually produces <GICS1234 xmlns="http://www.example.org/if"/> :)
如果你想控制使用的前缀,“如果:”您可以在第二个参数:
element {fn:QName('http://example.org/if', fn:concat('if:GICS','1234'))} {}
(: produces <if:GICS1234 xmlns:if="http://example.org/if"/> :)
注意,正是什么您在xml输出中获得的前缀可能因xquery处理器和您生产的xml结构而异,但您将始终获得等效的XML Infoset。