Предполагая, что имя параметра в шаблоне был элемент, вы могли бы добиться этого, проверяя, есть ли следующие братья элемента
<xsl:value-of select="not($element/following-sibling::*)" />
Таким образом, учитывая следующие XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/TEI">
<xsl:call-template name="text">
<xsl:with-param name="element" select="text[@id='E']"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="text">
<xsl:param name="element" />
<xsl:choose>
<xsl:when test="not($element/following-sibling::*)">Last</xsl:when>
<xsl:otherwise>Not Last</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
При нанесении на следующий XML
<TEI>
<text id="R" />
<text id="E" />
<text id="D" />
</TEI>
Ниже выводится
Not Last
Изменить параметр в E элемента, то следующий его выход вместо
Last
Однако, если это возможно, было бы лучше, чтобы избежать использования call-template с параметром. Лучший шаблон дизайна будет сделать использование применять-шаблоны здесь
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/TEI">
<xsl:apply-templates select="text[@id='D']" />
</xsl:template>
<xsl:template match="text[following-sibling::*]">
<xsl:text>Not Last</xsl:text>
</xsl:template>
<xsl:template match="text">
<xsl:text>Last</xsl:text>
</xsl:template>
</xsl:stylesheet>
Это также должно дать те же результаты
Спасибо. Я пробовал последний(), но знал, что это неправильно. – JPM