Книга: XSLT

last() 

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>

Оглавление книги

Оглавление статьи/книги

Генерация: 0.051. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз