プログラミング基礎 II

第十二回 (2008年 1月15日)

名前付きテンプレート

http://www.sw.it.aoyama.ac.jp/2007/PB2/lecture12.html

Martin J. Dürst

duerst@it.aoyama.ac.jp

O 棟 529号室

AGU

© 2007-8 Martin J. Dürst 青山学院大学

今日の予定

先回の復習

先回の演習

演習 1

本をテーブルとして出力する変換ファイルを次のように変更する:

正解例: tableStripes.xsl, その出力: resultStripes.html

演習 2

正解例: tableClump.xsl (出力は <xsl:apply-templates> を使ったものと変わらない)

定期試験の予定

1月28日 (月曜日) 3時限 (13:10-14:10)

過去の問題: 2006年度のミニテスト2006年度の期末試験

名前付きテンプレートの目的

名前付きテンプレートの基本形

<xsl:template name='greeting'>
  <p>Hello <strong>dear customer</strong>!</p>
</xsl:template>

名前付きテンプレートの呼び方

<xsl:template ...>
  ...
  <xsl:call-template name='greeting'/>
  ...
</xsl:template>

引数

parameter (ひきすう)

引数の例

<xsl:template name='greeting'>
  <xsl:param name='who' select='"customer"'/>
  <p>Hello <strong>dear <xsl:value-of select='$who'/></strong>!</p>
</xsl:template>
...
<xsl:call-template name='greeting'>
  <xsl:with-param name='who'>青山 例子</xsl:with-param>
</xsl:call-template>

応用例: 階乗を計算するテンプレート

<xsl:template name='階乗'>
  <xsl:param name='n'/>
  <xsl:choose>
    <xsl:when test='$n = 1'>1</xsl:when>
    <xsl:otherwise>
      <xsl:variable name='n1'>
        <xsl:call-template name='階乗'>
          <xsl:with-param name='n' select='$n - 1'/>
        </xsl:call-template>
      </xsl:variable>
      <xsl:value-of select='$n * $n1'/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

再帰

<xsl:param> のもう一つの使い方

演習 1

  1. 応用例 (階乗) を使った変換ファイルを作成し、何かの数字の階乗を計算してください

    ヒント:

  2. 1. を変更して、n を外から指定できるようにする

正解例: fac.xsl

演習 2

提出: 1月20日 (日曜日) 22:00 までに Moodle に投稿

(例えば新年とか成人式の) 挨拶文を (X)HTML で出力する変換ファイルを作る。

相手の名前と挨拶文の回数は外側から指定できるようにする。

ヒント: 「n 回の挨拶文」を階乗と同じように定義する