如何使用 FLWOR XQuery 重命名节点元素名称?
How to rename node element names using a FLWOR XQuery?
如何使用如下所示的 XQuery
将所有 foo
标签重命名为 baz
?
佛罗里达州:
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"
示例文档:
<root>
<foo>bar</foo>
</root>
我正在寻找的输出:
<root>
<baz>bar</baz>
</root>
另见:
http://xqueryfiddle.liberty-development.net/nc4P6y8
和:
removing an element from xml using saxon xquery
它使用的东西并非完全不同..
假设您的真实文档比显示的文档更复杂,使用 XSLT 而不是 XQuery 通常更容易对大文档进行小的更改。在 XSLT 3.0 中,这是
<xsl:stylesheet ...>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="foo">
<baz><xsl:apply-templates/></baz>
</xsl:template>
</xsl:stylesheet>
或者,如果这是一次性要求,请考虑使用 Saxon 的 Gizmo 实用程序:
java net.sf.saxon.Gizmo -s:source.xml
/>rename //foo to "baz"
/>save out.xml
/>quit
你应该可以使用
for $foo in doc('input.xml')//foo
return rename node $foo as "baz"
假设您支持 XQuery 更新(例如在 Saxon 9 或 10 EE 或 BaseX 中)。
如何使用如下所示的 XQuery
将所有 foo
标签重命名为 baz
?
佛罗里达州:
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"
示例文档:
<root>
<foo>bar</foo>
</root>
我正在寻找的输出:
<root>
<baz>bar</baz>
</root>
另见:
http://xqueryfiddle.liberty-development.net/nc4P6y8
和:
removing an element from xml using saxon xquery
它使用的东西并非完全不同..
假设您的真实文档比显示的文档更复杂,使用 XSLT 而不是 XQuery 通常更容易对大文档进行小的更改。在 XSLT 3.0 中,这是
<xsl:stylesheet ...>
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="foo">
<baz><xsl:apply-templates/></baz>
</xsl:template>
</xsl:stylesheet>
或者,如果这是一次性要求,请考虑使用 Saxon 的 Gizmo 实用程序:
java net.sf.saxon.Gizmo -s:source.xml
/>rename //foo to "baz"
/>save out.xml
/>quit
你应该可以使用
for $foo in doc('input.xml')//foo
return rename node $foo as "baz"
假设您支持 XQuery 更新(例如在 Saxon 9 或 10 EE 或 BaseX 中)。