xsltproc(xslt processor)を使ったXML-HTML変換

D:20031227 免責事項

GNOME projectの成果物であるxsltprocを使った(お約束の)XML-HTML変換の手法を、このWEBページ(Debian User's Note for woody)の制作を例として紹介します。

XML文書をつくる

まずは変換対象となるXML文書を編集できる環境と文書そのものを用意しなければならない。エディタはxemacs21がすでにインストールされているので、あとはpsgmlを追加するだけ。また、DTDはDocbook関係を使うので関連パッケージ一式をインストールしておく。以上のことをまとめるとつぎのようになる。

# apt-get install psgml
# apt-get install sgml-base
# apt-get install sgml-data
# apt-get install docbook
# apt-get install docbook-doc
# apt-get install docbook-dsssl
# apt-get install docbook-dsssl-doc
# apt-get install docbook-xml
# apt-get install docbook-xml-website
# apt-get install docbook-xsl-stylesheets

psgmlxemacs21で使うための設定については、古い文書の「SGML環境を構築する」も参照ください。.xemacs/init.elに追加記述するべき内容を紹介しています。[8]準備ができたら確認のために簡単なXML文書を作ってみよう。手順はつぎのとおり。

  1. xemacs21で新規ファイルを作成する。拡張子は.xml。

  2. XML宣言とDTDファイルを指定する。メニュー>DTD>Insert DTDから選択。下図を参照。

  3. バッファ内をマウス右クリックするとその文脈で使えるエレメントが表示される。そこで適切なエレメントを選んでマークアップする。

  4. 文書を保存して、C-c C-vで文書の妥当性を検証しておく。メニュー>SGML>Validate。

図 1. psgmlのInsert DTDメニュー

psgmlのInsert DTDメニュー

用意ができたら、あとは文書をマークアップするだけだ。

スタイルシートを選ぶ

スタイルシートもDTDと同様にDocbook関係のパッケージからdocbook-xsl-stylesheetsを使うことにする。具体的にはタイトル毎に独立したHTML文書を生成するchunk.xslを選択した。このスタイルシートを使うにあたって、chunk.xslに下記の行を追加した。ウチのDebianはデフォルトのエンコーディングがEUC-JPなので、XML文書もHTML文書も統一してEUC-JPとした。

<xsl:param name="default.encoding">euc-jp</xsl:param>
<xsl:param name="using.chunker">1</xsl:param>
<xsl:param name="root.filename">index.html</xsl:param>
<xsl:param name="use.id.as.filename">1</xsl:param>

できあがったHTML文書に自前のCSSを適用する場合はあらかじめ用意しておく。

xsltprocでの変換

XML文書を保存したディレクトリへ移動してxsltprocを起動するとカレントディレクトリにHTML文書が生成される。コマンドラインの記述はつぎのとおり。"--stringparam"オプションで自前のCSSを使うように指定している。

$ xsltproc --stringparam html.stylesheet my_html_stylesheet.css \
/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/html/chunk.xsl my_xml_file.xml


[8] 参考文書:ディレクトリ/usr/share/doc/psgml/直下の一連のファイル。