http://www.sw.it.aoyama.ac.jp/2009/PB2/lecture10.html
© 2006-9 Martin J. Dürst 青山学院大学
document()
関数で「予備」のデータファイルが使える<xsl:variable>
で変数が作成可能質問: 出力に <td><td>3</td></td>
などができる。なぜですか。
答え: テンプレートを適用するうちに複数回
<td>
...</td>
に「遭遇」した。
例:
<td><xsl:apply-templates select='@number'/></td> ... <xsl:template match='@number'> <td><xsl:value-of select='.'/></td> </xsl:template>
解決策: どちらかの <td>
と
</td>
をとる
参考: <td><xsl:value-of
select='@number'/></td>
でも書けます。
mode
を使えば、自然に分類が可能<xsl:apply-templates select='book[position()!=last()]'/> <xsl:apply-templates
select='book[last()]' mode='last-book'/>
<xsl:if>
<xsl:if test='条件' >結果</xsl:if>
<xsl:if test='@number >
100'>20</xsl:if>
<xsl:choose>
<xsl:choose>
の中に一つ以上の
<xsl:when test='条件'>
の後、必要に応じて
<xsl:otherwise>
<xsl:when>
の中身、<xsl:otherwise>
の中身<xsl:when>
の結果も合わなかったら <xsl:otherwise>
の中身が結果; それもなかったら結果は空<xsl:choose> <xsl:when test='@number > 100'>20</xsl:when> <xsl:otherwise>0</otherwise><!-- 割引なし --> </xsl:choose>
<xsl:if>
や <xsl:choose>
は簡単が、長い(@number >= 100)*20 + (@number >=10 and @number <
100)*10
...(提出不要)
変換ファイル ordersDiscount.xsl
の割引の計算を <xsl:if>
から
<xsl:choose>
に変更する。
注意点:
ordersDiscount.xsl
に月曜日からの宿題の変更を加えた方がいい
(特に変数)<xsl:if>
の代わりに一つの
<xsl:choose>
を使う提出: 12月21日 (月曜日) 22:00 までに Moodle に投稿
本ごとの郵送料を計算する。注文のリストにそのための新しい欄を作る。本の全体の値段に足す。
本の数 | ||||
---|---|---|---|---|
> 50 | > 2 | ≤ 2 | ||
値段 (円) | > 10,000 | 0 | 500 | 500 |
> 2000 | 100 | 300 | 500 | |
> 500 | 100 | 200 | 300 | |
≤500 | 75 | 150 | 200 |
ヒント (Test-Driven Development):