XSLT преобразование с подсчетом - PullRequest
1 голос
/ 18 февраля 2011

Я пытаюсь выполнить xslt-преобразование некоторых xml-данных в 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>

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

Любая помощь, высоко ценится! Helen

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Сортируйте, а затем проверьте положение, как, например, в следующем примере:

<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>
0 голосов
/ 18 февраля 2011

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

.

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

...