首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FLWOR XQuery重命名节点元素名称?

如何使用FLWOR XQuery重命名节点元素名称?
EN

Stack Overflow用户
提问于 2020-06-18 06:40:45
回答 2查看 499关注 0票数 1

如何将所有foo标记重命名为baz,使用如下所示的XQuery

FLWOR:

代码语言:javascript
复制
declare namespace map = "http://www.w3.org/2005/xpath-functions/map";
declare namespace array = "http://www.w3.org/2005/xpath-functions/array";

declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";

for $x in /root

return rename node $x/root/foo as "baz"

样本医生:

代码语言:javascript
复制
  <root>
    <foo>bar</foo>
  </root>

我想要的输出:

代码语言:javascript
复制
  <root>
    <baz>bar</baz>
  </root>

另见:

http://xqueryfiddle.liberty-development.net/nc4P6y8

以及:

removing an element from xml using saxon xquery

它使用的东西并不完全不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-18 11:11:57

你应该能用

代码语言:javascript
复制
for $foo in doc('input.xml')//foo
return rename node $foo as "baz"

假设您支持XQuery更新(比如在Saxon9或10EE或BaseX中)。

票数 4
EN

Stack Overflow用户

发布于 2020-06-18 08:55:41

假设您的实际文档比所显示的文档更复杂,那么使用XSLT而不是XQuery对一个大文档进行小的更改通常更容易。在XSLT3.0中,这是

代码语言:javascript
复制
<xsl:stylesheet ...>
  <xsl:mode on-no-match="shallow-copy"/>
  <xsl:template match="foo">
    <baz><xsl:apply-templates/></baz>
  </xsl:template>
</xsl:stylesheet>

或者,如果这是一次性的要求,可以考虑使用Saxon的Gizmo实用程序:

代码语言:javascript
复制
java net.sf.saxon.Gizmo -s:source.xml
/>rename //foo to "baz"
/>save out.xml
/>quit
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62443842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档