#
XML + XSLT
Tag(s):
XML
Webデザイン
XSLTで遊ぶ。過去の日記(例えば2000.04.16)にも書いたが,HTMLが予定していない構造の文書をWebブラウザで見たいからという理由で直接HTMLで記述するのは,記述したい文書の構造が自然に記述できないし,構造の情報が失われる恐れがあるので,上手くない。内部ではあくまで構造に即した形でデータを持っておき,表示するときにHTMLに変換するのがよい。
http://www2.wbs.ne.jp/~skaga/ [リンク切れ]
例えば次のようなXML文書をXSLTでHTMLに変換してみる。
<?xml version="1.0" encoding="utf-8"?>
<article>
<pa>はろはろXML</pa>
</article>
で,XSLT文書:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="iso-2022-jp"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="/">
<html>
<head>
<title>XSLTのテスト</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="pa">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
XSLTプロセッサとしては, 例えば次がある;
- LotusXSL
http://www.trl.ibm.co.jp/alphaWorks/lotusxsl/lotusxsl.htm [リンク切れ]
- XT
http://www.jclark.com/xml/xt.html [リンク切れ]
LotusXSLはASF: The Apache Xalan Project の Xalan Java と実質的に同じもの。
$ export CLASSPATH=.:/opt/lotusxsl_1_0_1/xalan.jar:/opt/lotusxsl_1_0_1/xerces.jar
$ java org.apache.xalan.xslt.Process -in first.xml -xsl first.xslt -out out.html
XTの場合,XPも必要。
$ export CLASSPATH=.:/opt/xp/xp.jar:/opt/xt/sax.jar:/opt/xt/xt.jar
$ java com.jclark.xsl.sax.Driver first.xml first.xslt out.html
で,こういうHTMLが出力される。エンコーディング(文字コード)もきちんと変換される。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
<title>XSLTのテスト</title>
</head>
<body>
<p>はろはろXML</p>
</body>
</html>
XMLファイルから完全なHTMLファイルを生成するのも有効だけど,動的にページを生成するときなど,XMLファイルからHTML片を生成できればもっとよさそう。その辺はどうなんだろう。
触った感じとしては,次の場合に有用:
- XMLデータをWeb以外にも流用したい
- 脚注の自動採番などをスクリプトを通さずやりたい
XSLTはあくまでも文書の変形であって,Webブラウザで見たときにある程度の見栄えを出すためにはCSSも書かないといけない。なので,XSLTを使う明確な理由がない場合には,単に手間が増える。
follow-up(s): 2000.05.12