2

我有一个具有以下结构的输入 xml。

<?xml version="1.0" encoding="US-ASCII" ?>
<test name="main node">
    <test name="sub node">
        <test name="inner node">sample text</test>
    </test>
</test>

所需的输出如下:

Group By main node
Group By sub node
Group By inner node
End By inner node
End By sub node
End By main node

也就是说,每当节点“测试”出现时,应该启动组并且组的结束也应该是适当的。对于每个“测试”节点,我需要添加一个“按节点的@name 属性分组”和“按节点的@name 属性结束”。这可以通过递归实现吗?任何人都可以帮助解决这个问题吗?

4

1 回答 1

1

以下 XSLT 样式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="test">
    <xsl:text>Group By </xsl:text>
    <xsl:value-of select="@name"/>
    <xsl:text>&#xa;</xsl:text>
    <xsl:apply-templates select="test"/>
    <xsl:text>End By </xsl:text>
    <xsl:value-of select="@name"/>
    <xsl:text>&#xa;</xsl:text>
  </xsl:template>

</xsl:stylesheet>

应用于您的输入时产生此输出:

Group By main node
Group By sub node
Group By inner node
End By inner node
End By sub node
End By main node
于 2013-11-08T13:01:03.587 回答