Лучше всего запустить его под Docker. Вы можете найти изображений в Docker Hub , и есть Docker Compose файлы , чтобы при необходимости вызвать полный стек.
положение () / в последний раз () возвращает положение/последнюю позицию в текущем контексте, поэтому когда навигатор будет расположен в одного <месяц>, положение () возвратится <день> в течение того месяца, и в последний раз () возвратится последний <день> в течение того месяца, но я предполагаю, что Вы знаете это.
Поэтому то, что Вы могли сделать, сглаживают весь <день> в массиве и вставляют переменную, до выбора точно так же, как Вы сделали прежде.
<xsl:variable name="days" select="//day"/>
<xsl:apply-templates select="$days[position()>last()-30]" />
Просматривая спецификацию XSLT сегодня, я нашел примечание, которое объясняет почему //
ведет себя этот путь:
//
коротко для/descendant-or-self::node()/
. Например,//para
коротко для/descendant-or-self::node()/child::para
и выбор любой - такжеpara
элемент в документе (даже apara
элемент, который является элементом документа, будет выбран//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]"/>