我需要准备一个XQuery文件,对于任何输入XML文件,该文件都会将所有属性转换为元素。我在下面的XSLT中完成了它。 tranformation.xsl
:
<xsl:template match="*" name="xsl:initial-template">
<xsl:element name="{name()}">
<xsl:for-each select="@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
<xsl:apply-templates select="child::node()"/>
</xsl:element>
</xsl:template>
答案 0 :(得分:4)
在XQuery 3.1中,您可以使用
declare function local:apply($nodes as node()*) as node()* {
$nodes ! (
typeswitch(.)
case document-node()
return local:apply(node())
case element()
return element {node-name()} {
@* ! element{node-name()} { data() },
local:apply(node())
}
default return .
)
};
local:apply(/)
https://xqueryfiddle.liberty-development.net/bFukv8c/3上的在线示例