Я составил список книг в формате XML. Ниже приведен формат моего XML-файла; есть, конечно, еще несколько блоков <book>
.В XSL, как я могу напечатать только первую строку для каждого блока?
<data>
<book>
<title>Encyclopaedia Britannica</title>
<category>encyclopedia</category>
<language>English</language>
<author>Encyclopaedia Britannica Editorial</author>
<year>1768</year>
<price>49.99</price>
</book>
</data>
И я хочу напечатать название самого дорогого. Я попытался следующим образом в файле .xsl
:
<p style = "display: block;">
The most expensive book is "
<xsl:for-each select="data/book">
<xsl:sort select="price" order="descending"/>
<!-- <xsl:value-of select="title"/> -->
</xsl:for-each>
<xsl:value-of select="data/book/title"/>
"
</p>
<xsl:value-of>
Когда блок в <xsl:for-each>
(который я поставил в качестве комментария) выполняется он печатает все книги, отсортированные в порядке убывания. Конечно, <xsl:value-of select="data/book/title"/>
заставляет печатать первую книгу оригинальной таблицы.
Поэтому я хочу напечатать самый дорогой вариант, остановив печать других книг, но первый, когда таблица отсортирована.
Я знаю, что нет такой вещи, как break
, поэтому я подумал, используя блок <xsl:if>
, чтобы проверить, является ли строка первой или нет. Возможно ли это? Или я могу сделать это по-другому?
Эй, у тебя есть то, что мне нужно. Я ноб в программировании XSL, и 'prosition()' для меня новый. Благодаря! –