Как я выбираю последние элементы N с XPath?

Лучше всего запустить его под Docker. Вы можете найти изображений в Docker Hub , и есть Docker Compose файлы , чтобы при необходимости вызвать полный стек.

12
задан Ben Blank 19 January 2009 в 18:21
поделиться

2 ответа

положение () / в последний раз () возвращает положение/последнюю позицию в текущем контексте, поэтому когда навигатор будет расположен в одного <месяц>, положение () возвратится <день> в течение того месяца, и в последний раз () возвратится последний <день> в течение того месяца, но я предполагаю, что Вы знаете это.

Поэтому то, что Вы могли сделать, сглаживают весь <день> в массиве и вставляют переменную, до выбора точно так же, как Вы сделали прежде.

<xsl:variable name="days" select="//day"/>
<xsl:apply-templates select="$days[position()>last()-30]" />
11
ответ дан 2 December 2019 в 20:41
поделиться

Просматривая спецификацию XSLT сегодня, я нашел примечание, которое объясняет почему // ведет себя этот путь:

// коротко для /descendant-or-self::node()/. Например, //para коротко для /descendant-or-self::node()/child::para и выбор любой - также para элемент в документе (даже a para элемент, который является элементом документа, будет выбран //para так как узел элемента документа является ребенком корневого узла); div//para коротко для div/descendant-or-self::node()/child::para и выбор все - также para потомки детей отделения.

Примечание: Путь местоположения //para[1] не означает то же как путь местоположения /descendant::para[1]. Последние выборы первый потомок para элемент; первый выбирает всего потомка para элементы, которые являются первыми para дети их родителей.

Другими словами, при использовании //, position() вычисляется вперед child ось, не descendant-or-self ось. Определение descendant или descendant-or-self позволяет Вам получать первые/последние n узлы, как Вы ожидали бы:

<xsl:apply-templates select="descendant::day[position()>last()-30]"/>
4
ответ дан 2 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: