Docbook の変換でエラーが出ていた

Docbookを書いて、スタイルシートを適用して、HTMLに変換していたのだけど、エラーが出まくっていた。なのに、変換自体はうまくいっているというちょっと不思議なエラーだった。エラーの出力はこんな感じ。こんなのが山ほど出る。

[Error] autoidx.xsl:20:31: Element type "xsl:stylesheet" must be declared.
[Error] autoidx.xsl:37:79: Element type "xsl:key" must be declared.
[Error] autoidx.xsl:41:27: Element type "xsl:key" must be declared.
[Error] autoidx.xsl:45:55: Element type "xsl:key" must be declared.
...

さっぱーり、原因がわからなかったのだ。で、最初JDK1.5にしたらなおったーっておもったら全く関係なかった。色々試していたんだけど、xhtml に変更したら出なくなることが解かった。ということは、htmlのスタイルシートの設定のどこかがおかしいって事なのかな。この辺は、もっと調べないと解からないけど、xhtml でも全く問題ないので、xhtml を利用することにする。

とりあえず、単純な変換ということでこんな風なスタイルシート(mydocbook.xsl) を用意してみた。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="/usr/share/xml/docbook/xsl-stylesheets/xhtml/chunk.xsl"/>
  <xsl:output method="xhtml" encoding="euc-jp" indent="yes"/>
</xsl:stylesheet>

で、Xalan をダウンロードして、変化をすることにする。Xalan は、xml文書にスタイルシートを適用して、別のフォーマットに変換する為の簡単なコマンドラインからのプログラムを利用できる。(以下では、CLASSPATHの設定はかなり、横着している)。

#!/bin/sh

XALAN_HOME=/usr/java/xalan-j/
export XALAN_HOME

CLASSPATH=""
JAR_LIST=`find $XALAN_HOME -name '*.jar'`
for f in $JAR_LIST
do
        CLASSPATH="${f}:${CLASSPATH}"
done

java -cp $CLASSPATH org.apache.xalan.xslt.Process -in archtea-manual.xml -xsl mydocbook.xsl

これを実行することで変換してくれた。

file:///usr/share/xml/docbook/xsl-stylesheets/xhtml/chunker.xsl;
 Line #87; Column #18; Writing ch01s02.html for section
file:///usr/share/xml/docbook/xsl-stylesheets/xhtml/chunker.xsl;
 Line #87; Column #18; Writing ch01.html for chapter
file:///usr/share/xml/docbook/xsl-stylesheets/xhtml/chunker.xsl;
 Line #87; Column 
...

変換してくれるのは良いんだけど、その中身を用意しないと ... orz.


参照情報

Xalan: http://xml.apache.org/xalan-j/
DocBook: http://sourceforge.net/projects/docbook/
その他、XalanをGoogleで検索した結果を参考にしました。