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 ドキュメント