last() 関数  
現在のコンテキストの最後のノードの位置を返します。この関数は、指定された要素が最後に現れたテンプレートを定義するか、指定されたノードが、それが属するノードセット内の最後のノードであるかどうかをテストするときに役立ちます。
 
入力

なし。

 
出力

現在のコンテキストのノード数に等しい数値。たとえば、現在のコンテキストに 12 個の <li> ノードが含まれている場合、last() 関数は 12 を返します。

 
定義先

XPath 4.1 節「ノードセット関数」

 

last() 関数を使用して、リストの最後の項目を特別な方法で処理します。使用する XML ドキュメントは次のとおりです。

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

リストの最後の <listitem> を異なる方法で処理するスタイルシートを次に示します。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="html"/>

  <xsl:template match="/">
    <html>
      <head>
        <title>
          <xsl:value-of select="/list/title"/>
        </title>
      </head>
      <body>
        <h1>
          <xsl:value-of select="/list/title"/>
        </h1>
        <ul>
          <xsl:for-each select="/list/listitem">
            <xsl:choose>
              <xsl:when test="position()=last()">
                <li><b>Last, but not least: </b><xsl:value-of select="."/></li>
              </xsl:when>
              <xsl:otherwise>
                <li><xsl:value-of select="."/></li>
              </xsl:otherwise>
            </xsl:choose>
          </xsl:for-each>
        </ul>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

このスタイルシートを使用して XML ドキュメントを変換した結果は次のとおりです。

<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>A few of my favorite albums</title>
</head>
<body>
<h1>A few of my favorite albums</h1>
<ul>
<li>A Love Supreme</li>
<li>Beat Crazy</li>
<li>Here Come the Warm Jets</li>
<li>Kind of Blue</li>
<li>London Calling</li>
<li>Remain in Light</li>
<li>The Joshua Tree</li>
<li>
<b>Last, but not least: </b>The Indestructible Beat of Soweto</li>
</ul>
</body>
</html>

この HTML ファイルの表示を図 C-7 に示します。

生成された HTML ドキュメント