XSLT/XSL 递归嵌套元素

Posted

技术标签:

【中文标题】XSLT/XSL 递归嵌套元素【英文标题】:XSLT/XSL recursive nested elements 【发布时间】:2013-06-26 11:11:19 【问题描述】:

我需要在 XSL 中创建递归转换, 输入xml

<root><foo1 /><foo2 /><foo3 /></root>

输出

<root> 
 <foo1>
   <foo2>
     <foo3>
     </foo3>
    </foo2>
  <foo1> 
</root>

非常感谢您的帮助...

【问题讨论】:

***.com/questions/17370562/… 【参考方案1】:

试试这样的:

  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="xml"/>

    <xsl:template match="/root">
        <xsl:copy>
            <xsl:apply-templates select="*[1]" />
        </xsl:copy>
    </xsl:template>

    <xsl:template match="*">
        <xsl:copy>
            <xsl:apply-templates select="following-sibling::*[1]" />
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

这将生成以下输出:

<?xml version="1.0"?>
<root>
  <foo1>
    <foo2>
      <foo3/>
    </foo2>
  </foo1>
</root>

【讨论】:

以上是关于XSLT/XSL 递归嵌套元素的主要内容,如果未能解决你的问题,请参考以下文章

python利用递归函数输出嵌套列表的每个元素

使用递归(并且不使用循环)展平嵌套数组

Python递归提取嵌套列表的所有元素

从嵌套对象数组中递归创建字符串?

Medium | LeetCode 341. 扁平化嵌套列表迭代器 | 递归 | 栈

c ++:嵌套for循环的动态数量(无递归)