Как получить только 10 первых тегов входа, используя XSLT? - PullRequest
0 голосов
/ 03 октября 2011

В фидбурнере RSS использую

<xsl:template match="node() | @*">
  <xsl:copy>
    <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

чтобы получить все содержимое канала со структурой, как показано ниже:

<feed>
<entry><published></published><title></title><content></content>....</entry>
</feed>

Мой вопрос: возможно ли получить только первые 10 <entry></entry> вместо всех 25? Как это сделать?

Примечание: тег ввода имеет эту форму <entry gd:etag="W/&quot;AkcHRH8yfSp7ImA9WhdUFkg.&quot;"> Я не знаю, имеет ли это значение

Ответы [ 2 ]

2 голосов
/ 03 октября 2011

что-то вроде

/feed/entry[position()<10]

Я имею в виду, вам нужно добавить этот шаблон:

<xsl:template match="entry[position() &gt; 10]"/>

Это отбрасывает все записи после 10 или что-то равное.Главное предложение - взглянуть на функцию position().

0 голосов
/ 03 октября 2011

Ваш шаблон был рекурсивным. Затем вы изменили поведение внешнего шаблона, нарушив рекурсию.

Самый простой способ сделать то, что вы хотите:

<xsl:template match="/feed/entry[position() &lt; 10]">
    <xsl:copy-of select="." />
</xsl:template>
...