我有以下xml输入:
<data>
<parent Id="1" value="ParentOne">
<child x="1" y="2" />
</parent>
<parent Id="2" value="ParentTwo">
<child x="3" y="4" />
</parent>
</data>
我需要输出的内容应该像父节点和子节点一样:
<data>
<combined Id="1" value="ParentOne" x="1" y="2" />
<combined Id="2" value="ParentTwo" x="3" y="4" />
</data>
如何使用XSLT实现这一目标?另外,请记下名为<combined>
的新命名节点。
我帮助你。
感谢。
答案 0 :(得分:3)
您可以使用此模板将parent-with-child转换为组合元素:
<xsl:template match="parent">
<combined>
<xsl:copy-of select="@* | child/@*" />
</combined>
</xsl:template>
这样做是将输入<parent>
元素及其<child>
中的所有属性复制到输出<combined>
元素中。
您还需要身份模板,以便通过<data>
元素和其他节点传递:
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="node() | @*" />
</xsl:copy>
</xsl:template>
答案 1 :(得分:3)
如果我想恢复原始输入结构,模板会是什么样子?
Straightforwad:
<xsl:template match="combined">
<parent>
<xsl:copy-of select="@Id|@Value"/>
<child x="{@x}" y="{@y}"/>
</parent>
</xsl:template>