http://www.sw.it.aoyama.ac.jp/2009/PB2/lecture9.html
© 2006-9 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
showXMLsvg.xsl
、出力結果:
showXML.svg
xml-stylesheet
処理命令にて可能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/2007/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/2007/PB2/order' version='1.0'> ... <xsl:apply-templates select='o:order'/> ... <xsl:template match='title'>
document(...)
関数を何回も読んで、何回もデータを読み込む可能性がある<xsl:variable>
@select
の結果:<xsl:variable name='my値' select='値...'
/>
<xsl:variable
name='my値'>値...</xsl:variable>
$
を付ける@isbn = $order_isbn
(data types)
XSLT の変数、XPath の式などに数種類がある:
true()
又は false()
)データ型の間の変換はある程度自動
<xsl:value-of>
要素<xsl:apply-templates>
の @select
はノードセットでないといけない<xsl:value-of
select='...'>
が使える<xsl:value-of select='@price * $number'/>