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):