XSLT. Как вывести N элементов из списка
Дан фрагмент XML:
<Data>стр1</Data>
<Data>стр2</Data>
<Data>стр3</Data>
...
<Data>стрN</Data>
Нужно вывести произвольное (вычисленное ранее в параметрах этого же XML) количество строк. Порядок строк не играет роли. Сортировка не нужна.
Например, если задано 2, то должно быть в результате
стр1
стр2
или
стр3
стр2
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
Используя предикат XPath и функцию position().
Входной XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<Data>value1</Data>
<Data>value2</Data>
<Data>value3</Data>
<Data>valueN</Data>
</root>
XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:param name="counter" select="2"/>
<xsl:template match="/">
<xsl:for-each select="root/Data[position() <= $counter]">
<xsl:value-of select="."/><xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Результат
value1
value2