Выбор нескольких нод

Бывает ситуация, когда нужно при помощи XSLT вывести, используя шаблон, не все ноды из XML, а не более N из них. Например, если вы хотите показать не более 3х комментов, оставленных пользователю за последнюю неделю. При этом в XML у вас выведены все комменты за последнюю неделю.
Ограничение по числу обрабатываемых нод реализуется с использованием position():

<xsl:apply-template select="comment[position() &lt;= 3]"/>

Если ноды, к которым применяется шаблон должны также отбираться по какому-либо условию, то это условие должно быть указано в собственном предикате. Так писать нельзя:

<xsl:apply-template select="comment[@status = 'real' and position() &lt;= 3]"/>

Приведённый выше код означает, что сматчатся ноды с 1й по 3ю, которые соответствуют условию @status = 'real'. Для того, чтобы сначала выбрать ноды, соответствующие условию, а потом ограничить их количество, необходимо для каждого условия использовать свой предикат:

<xsl:apply-template select="comment[@status = 'real'][position() &lt;= 3]"/>


Tags:
This entry was posted on Wednesday, April 15th, 2009 at 1:49 pm and is filed under Заметки. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

Your comment