http://www.sw.it.aoyama.ac.jp/2009/PB2/lecture11.html
© 2006-9 Martin J. Dürst 青山学院大学
<xsl:for-each>
<xsl:attribute>
など<xsl:if>
<xsl:choose>
<xsl:apply-templates>
で複数のものの処理が可能<xsl:apply-templates select='book'/>
<xsl:sort>
で指定)<xsl:for-each>
<xsl:for-each
select='条件'>結果</xsl:for-each>
<xsl:apply-templates>
に
<xsl:template>
の内容をいれたもの<xsl:sort>
で順番が変更可能<xsl:for-each>
と現在のノード<xsl:for-each>
の内部には現在のノードは繰り返しの対称ノード<xsl:for-each select='book'> <xsl:apply-templates select='data/@ISBN'/> ... </xsl:for-each>
<xsl:for-each select='book'>
<xsl:apply-templates select='book/data/@ISBN'/>
...
</xsl:for-each>
<xsl:for-each>
と position()
など<xsl:for-each>
の内部で position()
は「全体の何番目」を指すlast()
は全体の数を指す<xsl:for-each select='book'> <xsl:choose> <xsl:when test='(position() mod 2) = 0'> <tr><xsl:apply-templates select='.'/></tr> </xsl:when> <xsl:when test='(position() mod 2) = 1'> <tr style='background-color: lightgreen'> <xsl:apply-templates select='.'/></tr> </xsl:when> </xsl:choose> </xsl:for-each>
<xsl:apply-templates>
で「誰かやってくれ」と要素を次々押し出す<xsl:for-each>
や
<xsl:value-of>
で必要な処理や内容を明示的に指定
(引っ張り込み)<xsl:attribute>
@name
で、属性値は
<xsl:attribute>
の内容で指定<xsl:attribute name='style'>background-color:
lightgreen</xsl:attribute>
<xsl:element>
,
<xsl:text>
, <xsl:comment>
などがある提出: 12月25日 (金曜日) 22:00 までに Moodle に投稿
本をテーブルとして出力する変換ファイルを次のように変更する:
<xsl:attribute>
を使用する(ソートしない限り、同様なものは
<xsl:apply-templates>
と <xsl:template>
でも可能)
提出: 12月25日 (金曜日) 22:00 までに Moodle に投稿
今まで使った簡単な変換ファイルをベースに、<xsl:apply-templates>
を少しずつ <xsl:for-each>
(や
<xsl:value-of>
) に変換。
注意: この演習はあくまで
<xsl:apply-templates>
と <xsl:for-each>
の関係や複数の <xsl:for-each>
の限界を実感するためのもので、このような「団子変換」をこの演習以外に絶対使って欲しくない。