http://www.sw.it.aoyama.ac.jp/2006/PB2/lecture12.html
O 棟 529号室
© 2007 Martin J. Dürst 青山学院大学
<xsl:apply-templates>
で自然に繰り返しする<xsl:for-each>
で明記的な繰り返しが必要本をテーブルとして出力する変換ファイルを次のように変更する:
<xsl:attribute>
を使用する正解例: tableStripes.xsl
,
その出力: resultStripes.html
今まで使った簡単な変換ファイルをベースに、<xsl:apply-templates>
を少しずつ <xsl:for-each>
(や
<xsl:value-of>
) に変換。
注意: この演習はあくまで
<xsl:apply-templates>
と
<xsl:for-each>
の関係や複数の
<xsl:for-each>
の限界を実感するためのもので、このような「団子変換」を絶対使って欲しくない。
正解例: tableClump.xsl
(出力は <xsl:apply-templates>
を使ったものと変わらない)
準備不足の学生がいました
正解例公開 (正解例を見るためにはブラウザのメニューから「表示」→「スタイル」→「solution」を選ぶ)
1月22日 (月曜日) 3時限 (13:10-14:10)
<xsl:apply-templates>
などが使えない)<xsl:template>
見たいなものを使いたい)<xsl:template>
要素を使う@match
の代わり @name
を使う<xsl:template name='greeting'> <p>Hello <strong>dear customer</strong>!</p> </xsl:template>
<xsl:call-template>
要素を使う@name
で呼びたいテンプレートを指定<xsl:template>
の中:
出力の一部を指定<xsl:variable>
の中:
変数の一部を指定<xsl:template ...> ... <xsl:call-template name='greeting'/> ... </xsl:template>
parameter (ひきすう)
<xsl:call-template>
の中に
<xsl:with-param>
要素を使う<xsl:template>
の中 (一番最初) に
<xsl:param>
を使う<xsl:with-param>
要素で @name
で引数の名前、@select
又は要素の内容で値を指定<xsl:param>
要素で@name
で引数の名前、必要であれば @select
又は要素の内容で即定値を指定<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>
<div>
の中の
<div>
があって、<xsl:apply-templates>
を使う場合<xsl:param>
のもう一つの使い方<xsl:transform>
(又は
<xsl:stylesheet>
) 直下で
<xsl:param>
を使うmsxsl
の場合:Z:\>msxsl data.xml transform.xsl name=value >result.html
ヒント:
<xsl:template>
が必要正解例: fac.xsl
提出: 1月13日 (土曜日) 22:00 までに Moodle に投稿
(例えば新年の) 挨拶文を (X)HTML で出力する変換ファイルを作る。
相手の名前と挨拶文の回数は外側から指定できるようにする。
ヒント: 「n 回の挨拶文」を階乗と同じように定義する