如何在XSLT 2.0中从For-Each获取重复元素

时间:2015-03-02 09:26:46

标签: xml xslt xslt-1.0 xslt-2.0

我想在XSLT 2.0中获得重复的元素。但是有一个限制,我必须只使用“For-each”循环。

输入XML:

<Data>
<Movie>
<name>A</name>
<writer>B</writer>
<writer>C</writer>
<director>D</director>
</Movie>
<Movie>
<name>A</name>
<writer>B</writer>
<writer>C</writer>
<director>D</director>
</Movie>
</Data>

预期输出XML:

<Imdb>
<Film>
<writer>B</writer>
<writer>C</writer>
</Film>
<Film>
<writer>B</writer>
<writer>C</writer>
</Film>
</Imdb>

当前输出:

<?xml version="1.0" encoding="UTF-8"?>
<Imdb>
   <Film>
      <writer>B</writer>
      <writer>B</writer>
   </Film>
</Imdb>

MyXSLT:

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

    <xsl:template match="Data">
        <Film>

 <xsl:for-each select="Movie">
  <writer>     
<xsl:value-of select="writer" />
</writer>
</xsl:for-each>
        </Film>

    </xsl:template>
</xsl:stylesheet>

注意:

我只需要为每个循环或循环每个组实现上述任务。所以任何人都可以请求帮助。

1 个答案:

答案 0 :(得分:1)

以这种方式试试吗?

<xsl:template match="/Data">
    <Imdb>
        <xsl:for-each select="Movie">
            <Film>
                <xsl:copy-of select="writer"/>
            </Film>
        </xsl:for-each>
    </Imdb>
</xsl:template>

我不知道你的意思:

  

我需要为每个循环或者实现上述任务   通过循环为每个组。

当然,您希望使用最有效的代码来实现上述任务吗?

相关问题