http://www.sw.it.aoyama.ac.jp/2008/PB2/lecture9.html
© 2006-8 Martin J. Dürst 青山学院大学
(全体の予定)
一般の XML ファイルを分かりやすいように (X)HTML などに変換する。できるだけ全てのノードの種類 (ルートを含め7種) に対応させる。
ヒント:
<div>
;
箇条書き (<ul>
、<li>
);
テーブル; (X)HTML ではなく SVG@class
を使うsomeXML.xml
、
作りかけの変換ファイルの例: showXMLsimple.xsl
,
その出力: showXMLsimple.html
、完成の出力の一例:
showXML.html
、完成の変換ファイル:
showXML.xsl
、テーブルを使った変換ファイル:
showXMLtable.xsl
、出力結果:
showXMLtable.html
document()
関数で呼び込むdocument()
関数not(
...)
, last()
)document()
関数の引数はファイル名document('books.xml')
document()
関数の値はそのファイルに入っている XML
文書のルートノードdocument('books.xml')/books/book[@isbn='4-...']
である決まった ISBN の本の選択xmlns:接頭辞="名前空間 URI"
で指定xmlns="名前空間 URI"
で指定接頭辞:要素名
などで使用order.xml (接頭辞無し):
<order xmlns='http://www.sw.it.aoyama.ac.jp/2006/PB2/order'> ... <books> <book isbn='4-641-16210-7' number='1'/> ...
books.xml (接頭辞無し):
<books> <book><data><title>...
orders.xsl (少なくとも片方は接頭辞つき):
<xsl:transform xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:o='http://www.sw.it.aoyama.ac.jp/2006/PB2/order' version='1.0'> ... <xsl:apply-templates select='o:order'/> ... <xsl:template match='title'>
<xsl:variable>
<xsl:variable name='my値' select='...' />
:
変数の値は @select
の結果<xsl:variable
name='my値'>...</xsl:variable>
:
変数の値は要素の内容$
を付けて使う@isbn = $order_isbn
(data types)
XSLT の変数、XPath の式などに数種類がある:
データ型の間の変換はある程度自動的
<xsl:value-of>
要素<xsl:apply-templates>
の @select
はノードセットでないといけない<xsl:value-of
select='...'>
が使える<xsl:value-of select='@price * @number'/>
提出: 12月 12日 (金曜日) 22:00 までに Moodle に投稿
order.xml の注文を (X)HTML で分かりやすいように変更する。注文票に本の題名、著者、値段などをbooks.xml から引用し、本ごとの小計 (冊の数 * 単価) を計算し、表で出力する。
条件: 同じ処理を繰り返さないように、そして XSLT が読みやすいように、変数を一つだけではなく三つぐらい使ってください。
ヒント: 途中までの変換ファイル: myorders.xsl