В XSLT 1.0 / XPath 1.0 переменные / параметры не вводятся явно .
Следовательно, в XSLT 1.0 решение должно использовать:
someExpression[position() = $i]
или
someExpression[number($i)]
В XSLT 2.0 лучше всего определить параметр как xs:integer
:
<xsl:param name="i" as="xs:integer"/>
затем используя
someExpression[$i]
дает желаемый результат.
Обратите внимание, однако, , что такое выражение, как:
//ACommonElementInTheDocument[1]
не выбирает первый элемент в документе с именем ACommonElementInTheDocument
.
Это выражение выбирает каждый ACommonElementInTheDocument
элемент, который является первым ACommonElementInTheDocument
дочерним элементом его родителя - поэтому приведенное выше выражение обычно может возвращать много элементов, и возможно, что ни один из них не будет первый ACommonElementInTheDocument
в документе.
Вот почему решение @ Per-T, скорее всего, неверно - как в XSLT 1.0, так и в XSLT 2.0 .
Вместо :
//ACommonElementInTheDocument[number($i)]/MyElement
использование
(//ACommonElementInTheDocument)[number($i)]/MyElement
Помните : оператор []
связывает сильнее (имеет более высокий приоритет), чем сокращение //
.