C-2. xsltproc を使って DocBook から HTML を作成する

とりあえず、 DocBook 形式の xml ファイルから HTML ファイルを作成してみます。

DocBook 形式の詳細な説明は後述するとして、ここではテスト用に、以下のような helloworld.xml を作成します。

helloworld.xml:

<?xml version="1.0" encoding="utf-8" standalone="no" ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book lang="ja">
  <title>book: ハロー ワールド!</title>
  <chapter>
    <title>chapter: ハロー ワールド!</title>
    <section>
      <title>section: ハロー ワールド!</title>
      <para>para: ハロー ワールド!</para>
    </section>
  </chapter>
</book>

日本語を使う場合は、以下の 2 点が必要です。

  1. book に lang="ja" が必要。

  2. ファイルを utf-8 で作成する場合は、?xml ... に encoding="utf-8" は省略できるが、それ以外の場合は、encoding="..." が必要。

さらに、以下のようなファイルも作成します。

docbook-html.xsl:

<xsl:stylesheet
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 version='1.0'>
  <xsl:import href="/usr/share/docbook-xsl/html/docbook.xsl"/>
  <xsl:output method="html" encoding="Shift_JIS" indent="yes"/>
</xsl:stylesheet>

Cygwin では /usr/share/docbook-xsl/html/docbook.xsl に DocBook を HTML に変換するための XSL が用意されていますが、デフォルト・エンコーディングが iso-8859-1 となっています。このまま利用すると、日本語がエンコードされませんので、docbook.xsl をインポートした後、エンコード部分をオーバーライドする (=書き換える) ようにします。

このインポートとオーバーラードの方法は、 XSL を利用する際の一般的方法です。

docbook-html.xsl は、どこに保存しておいてもかまいません。今回は、カレントと同一ディレクトリに置いて説明しますが、再利用することになりますので、適当なディレクトリへ保存するようにしてください。

$ xsltproc -o helloworld.html ./docbook-html.xsl helloworld.xml

または

$ xsltproc ./docbook-html.xsl helloworld.xml  helloworld.html

以上で、できあがったファイル helloworld.html が以下のものです。

DocBook と xsltproc を使用して、セクション単位で HTML を分割して作成することもできます。

以下のようなファイルを用意します。

docbook-html-chunk.xsl

<xsl:stylesheet
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'
  <xsl:import href="/usr/share/docbook-xsl/html/docbook.xsl"/>
  <xsl:output method="html" encoding="Shift_JIS" indent="yes"/>
</xsl:stylesheet>

以下のように実行します。

$ xsltproc ./docbook-html-chunk.xsl helloworld.xml
Writing ch01.html for chapter
Writing index.html for book

index.html:

新着記事