需要xslt将以下输入转换为上述输出。 基本上需要将第二级元素拆分为两个节点。很少有来自内部的节点需要完全移动到特殊节点,第二级节点也需要重命名。
输入:
<Root>
<Root2>
<Node1>
<Node1_1></Node1_1>
<Node1_2></Node1_2>
<Node1_3></Node1_3>
</Node1>
<Node2>
<Node2_1></Node2_1>
<Node2_2></Node2_2>
<Node2_3></Node2_3>
</Node2>
<Node3>
<Node3_1></Node3_1>
<Node3_2></Node3_2>
<Node3_3></Node3_3>
</Node3>
</Root2>
</Root>
输出:
<Root>
<NewRoot2>
<Node1_1></Node1_1>
<Node1_2></Node1_2>
</NewRoot2>
<NewRoot3>
<Node1_3></Node1_3>
<Node2_1></Node2_1>
<Node2_2></Node2_2>
<Node2_3></Node2_3>
<Node3_1></Node3_1>
<Node3_2></Node3_2>
<Node3_3></Node3_3>
</NewRoot3>
</Root>
答案 0 :(得分:0)
对于交付的输入,您可以使用所需的输出:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="Root">
<Root>
<NewRoot2>
<xsl:apply-templates select="//Node1_1|//Node1_2" />
</NewRoot2>
<NewRoot3>
<xsl:apply-templates select="//Node1_3|//Node2/*|//Node3/*" />
</NewRoot3>
</Root>
</xsl:template>
</xsl:stylesheet>