XQuery:本地函数中的命名空间问题
我的本地函数存在以下问题。
以下函数:
declare function local:exp($w as node()) as element()* {
for $e in ($w/e)
let $exp:= QName ("myns", "real")
return
element {$exp}{
attribute resource {$e/@lang}
}
};
生成此 xml:
<real xmlns="myns" resource="eng"/>
真正需要的是:
<myns:real rdf:resource="lang"/>
我怎样才能实现这一目标?
- 我该如何解决这个问题?
- 如何添加“rdf”作为资源属性的 NS。
提前致谢。
I have the following issue with my local function.
The following function:
declare function local:exp($w as node()) as element()* {
for $e in ($w/e)
let $exp:= QName ("myns", "real")
return
element {$exp}{
attribute resource {$e/@lang}
}
};
generates this xml:
<real xmlns="myns" resource="eng"/>
What really needed is:
<myns:real rdf:resource="lang"/>
How can I achive that?
- How can I address the problem?
- How can I add "rdf" as NS for resource attribute.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将前缀分配给 QName,如下所示:
解决此问题的最佳方法可能是在查询中声明这些命名空间并仅通过前缀引用它们:
请注意,您可以通过使用直接构造函数来简化函数:
You can assign the prefix to the QName as so:
Probably the best way to solve this is to declare these namespaces in your query and just refer to them by prefix:
Note that you can simplify your function by using direct constructors: