last() 

We use cookies. Read the Privacy and Cookie Policy

last() 

Функция last возвращает число узлов в наборе узлов, поэтому ее значение равно позиции последнего узла. Она применяется следующим образом:

number last()

Следующий пример из главы 5 последовательно выводит в результирующий документ имена планет. Однако я хочу, чтобы выводилось не просто «The first three planets are: Mercury Venus Earth» (первые три планеты: Меркурий Венера Земля), a «The first three planets are: Mercury, Venus, and Earth.» Необходимые знаки пунктуации можно добавить, определяя элемент, с которым мы работаем, при помощи функции position и проверяя позицию при помощи <xsl:if>:

<?xml version="1.0"?>

<xsl stylesheet version="1.0"

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output method="xml"/>

 <xsl:template match="PLANETS">

  <DOCUMENT>

   <TITLE>

    The Planets

   </TITLE>

   <PLANETS>

    The first three planets are:

    <xsl:apply-templates select="PLANET"/>

   </PLANETS>

  </DOCUMENT>

 </xsl:template>

 <xsl:template match="PLANET">

  <xsl:value-of select="NAME"/>

  <xsl:if test="position()!=last()">, </xsl:if>

  <xsl:if test="position()=last()-1">and </xsl:if>

  <xsl:if test="position()=last()">.</xsl:if>

 </xsl:template>

</xsl:stylesheet>

Вот результат:

<?xml:version="1.0" encoding="UTF-8"?>

<DOCUMENT>

 <TITLE>

  The Planets

 </TITLE>

 <PLANETS>

  The first three planets are: Mercury, Venus, and Earth.

 </PLANETS>

</DOCUMENT>