Функции position()
и last()
возвращают положение относительно текущего набора узлов.
Однако набор узлов не определяется атрибутом match
;это всего лишь фильтр, который определяет, какой шаблон должен быть применен.
Проблема заключается в части, которая выбирает узлы для применения шаблонов, например, apply-templates
, который заканчивается совпадением svg:use
.
Попробуйте использовать это в этом месте:
<xsl:apply-templates select="svg:use[@href='#electron']"/>
Затем вы получите ожидаемую позицию.
В качестве альтернативы вы можете изменить свой чек на последний элемент,например, вот так:
<xsl:if test="not(following-sibling::svg:use[@href='#electron'])">
<xsl:attribute name="class">val</xsl:attribute>
</xsl:if>