プログラミング基礎 II

第十一回 (2008年 1月7日)

繰り返し

http://www.sw.it.aoyama.ac.jp/2007/PB2/lecture11.html

Martin J. Dürst

duerst@it.aoyama.ac.jp

O 棟 529号室

AGU

© 2006-8 Martin J. Dürst 青山学院大学

今日の予定

前回の復習

先々回の演習

提出: 12月23日 (日曜日) 22:00 までに Moodle に投稿

order.xml の注文を HTML で分かりやすいように変更する。注文票に本の題名、著者、値段などをbooks.xml から引用し、本ごとの小計 (冊の数 * 単価) を計算し、表で出力する。

条件: 同じ処理を繰り返さないように、そして XSLT が読みやすいように、変数を一つだけではなく三つぐらい使ってください。

ヒント: 途中までの変換ファイル: myorders.xsl

正解の例: orders.xsl

先回の演習

提出: 12月30日 (日曜日) 22:00 までに Moodle に投稿

本ごとの郵送料を計算する。注文のリストにそのための新しい欄を作る。本の全体の値段に足す。

郵送料 (本一冊あたり、円)
本の数
> 50 > 2 ≤ 2
値段 (円) > 10,000 0 500 500
> 2000 100 300 500
> 500 100 200 300
≤500 75 150 200

本ごとの郵送料を計算する。注文のリストにそのための新しい欄を作る。本の全体の値段に足す。

正解の一例: ordersShipping.xsl

繰り返しの目的と概要

自然な繰り返し

明記的な繰り返し: <xls:for-each>

<xsl:for-each> と現在のノード

<xsl:for-each>position() など

XSLT の処理のパターン

<xsl:attribute>

演習 1

提出: 1月13日 (日曜日) 22:00 までに Moodle に投稿

本をテーブルとして出力する変換ファイルを次のように変更する:

演習 2

提出: 1月13日 (日曜日) 22:00 までに Moodle に投稿

今まで使った簡単な変換ファイルをベースに、<xsl:apply-templates> を少しずつ <xsl:for-each> (や <xsl:value-of>) に変換。

注意: この演習はあくまで <xsl:apply-templates><xsl:for-each> の関係や複数の <xsl:for-each> の限界を実感するためのもので、このような「団子変換」を絶対使って欲しくない。