преобразование xslt со счетом

Я пытаюсь выполнить преобразование xslt для некоторых данных xml в html. Это преобразование должно выполнить 3 задачи, а именно:

  • Сортировать данные по дате
  • Выводить только те, у кого есть id
  • Выведите только 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>

Я могу упорядочить по дате, я могу убедиться, что я вывожу только те, которые имеют идентификатор brand_id_1, но как мне остановить вывод, если я сделал это 3 раза?

Любая помощь, очень ценится! Хелен


person FlimFlam    schedule 18.02.2011    source источник


Ответы (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>
person Martin Honnen    schedule 18.02.2011
comment
+1 Черт! Опереди меня на 1 минуту... но я сначала исправил данные выборки ;-) - person Filburt; 18.02.2011

Вы можете использовать шаблон и рекурсию для эффективного создания цикла for, однако, поскольку xslt на самом деле является просто инструментом преобразования, лучше всего, если вы можете, изменить исходный xml

См. ответ здесь узел рекурсивного цикла xsl по индексу

person Shaun Hare    schedule 18.02.2011