【问题标题】:xslt transform with a count带计数的 xslt 变换
【发布时间】:2011-02-18 11:28:35
【问题描述】:

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

  • 按日期排序数据
  • 仅输出具有特定 id 的那些
  • 仅输出其中 3 个项目

例如,我的数据的 sn-p 如下所示:

<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次,我该如何停止输出?

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

【问题讨论】:

    标签: xml xslt xslt-1.0


    【解决方案1】:

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

    <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 该死!领先我 1 分钟...但我先更正了样本数据 ;-)
    【解决方案2】:

    您可以使用模板和递归来有效地创建一个 for 循环,但是由于 xslt 实际上只是转换工具,如果可以的话,最好的办法是修改您的源 xml

    在这里查看答案xsl recursive loop node by index

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2022-01-20
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多