带计数的xslt变换

时间:2011-02-18 11:28:36

标签: xml xslt xslt-1.0

我正在尝试对某些xml数据执行xslt转换为html。这个转换需要完成3个任务,它们是:

  • 按日期排序数据
  • 仅输出具有特定身份的
  • 仅输出其中3项

例如,我的数据片段如下所示:

<program id="brand_id_1">
    <date>2011-10-25</date>
    <some_info>This is some info</some_info>
</program>
<program id="brand_id_2">
    <date>2011-10-22</date>
    <some_info>This is some info</some_info>
</program>
<program id="brand_id_1">
    <date>2011-10-27</date>
    <some_info>This is some info</some_info>
</program>

我可以按日期订购,我可以确保只输出ID为brand_id_1的那些,但是一旦我完成了3次,我该如何停止输出?

任何帮助,非常感谢! 海伦

2 个答案:

答案 0 :(得分:2)

排序然后检查位置,例如在以下示例中:

<xsl:for-each select="//program[@id = 'brand_id_1']">
  <xsl:sort select="date" data-type="text"/>
  <xsl:if test="position() &lt; 4">
    <xsl:copy-of select="."/>
  </xsl:if>
</xsl:for-each>

答案 1 :(得分:0)

你可以使用模板和递归来有效地创建for循环,但是因为xslt实际上只是转换工具,所以如果你可以修改你的源xml那么

请在此处查看答案xsl recursive loop node by index