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 回の挨拶文」を階乗と同じように定義する