試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

DocBook文書を作成する環境を整える

DTDパッケージとXSLスタイルシート

DocBook文書を変換するときに使用される。
Gentoo Linuxでは「docbook-xml-dtd」「docbook-xsl-stylesheets」というパッケージ。Debian,Ubuntuでは「docbook-xml」「docbook-xsl」。
デスクトップ環境がインストールされていると、パッケージの依存により、知らない内に入っているということもありうる。

変換処理プログラム(XSLTプロセッサ)

DocBook XML文書を変換処理するためのプログラムは幾つか存在するが、

  • 「libxslt」パッケージのxsltproc(Usage: xsltproc [options] stylesheet file [file ...])
  • Saxon(Usage: java com.icl.saxon.StyleSheet [options] source-doc style-doc {param=value}...)
  • Xalan(Usage: Xalan [options] source stylesheet)

といったあたりが有名。使い方は、基本的にXMLファイルとXSLファイルの場所を指定するだけなのだが、どちらを先に指定するのかはXSLTプロセッサによって異なる。
次期バージョンのDocBook 5向けに、その新機能の幾つかに対応するため、新しいXSLT 2.0版スタイルシートが開発されている(1.0版でも処理はできる)が、2007年9月の時点では、Saxon バージョン8系のみが(XSLT 2.0に)対応している。
Xalanは、Java版の他にC++版があるのだが、Saxonにはないため、Saxonを使用するには、Javaが必要。
なお、参考として、SGML版のDocBookは、Jadeというツールで、DSSSLという形式のスタイルシートを用いてSGMLファイルを変換処理する。

テキストエディタ

どのようなものでも書くことはできるが、XML入力支援付きのエディタがよい。Emacsが使えれば「nXML mode」という便利なモードが使えるが、それ以外のフリーソフトウェアで使いやすそうなものとしては、MonoDevelop(バージョン0.15か、それ以降が必要)+MonoDevelop XML Editor(MonoDevelopのアドイン)がある。
(2009/8/7)nXML modeはもともと本体とは別のパッケージだったが、バージョン23系からは標準で含まれるようになった。

MonoDevelop XML Editorについて

バージョン4のXML Schemaは使用できない*1。DocBook 5の文書を書くのには十分に使える。手順としては

  1. MonoDevelopをディストリのパッケージでインストール
  2. MonoDevelop XML Editorをインストール
  3. http://www.docbook.org/schemas/5x から最新版の「W3C XML Schema」を開き、docbook.xsdをダウンロードし、保存する
  4. MonoDevelopの設定から「XML Editor」-「XML Schemas」を開き、docbook.xsdの場所を指定して追加する


ここまで行えば、要素名や属性名の補完や、XMLの検証を行うことができるようになる。下の画像は、要素名を補完しているところ。

(2008/5/18)バージョン0.7が出ている(MonoDevelop 1.0が必要)が、スキーマファイルの設定は0.5のときと同じ要領で行える。

EmacsのnXML modeでのRELAX NGの設定と補完の使い方

XMLファイルごとに、使用するスキーマファイルを個別に設定できる。ドキュメント編集中にメニューを「XML」-「Set Schema」-「File...」と辿り、docbook.rncの場所を指定することで、次回以降そのファイルに対しては、指定したdocbook.rncが使われる。この設定は、ドキュメントのXMLファイルのあるディレクトリにschemas.xmlというファイルに保存される。uri要素のuri属性の値に場所が書かれている。

<?xml version="1.0"?>
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
 <uri resource="[ドキュメントのファイル名]" uri="[docbook.rncの場所]"/>
</locatingRules>

nXML modeには、元々DocBook文書に対しての(古いバージョンの)rncファイルが付属していて、これを上書きすることで、個別にschemas.xmlを作って指定しなくても、DocBook文書と自動判別されたときに、上書きしたDocBookのスキーマが適用される。
http://www.docbook.org/rng/
から、使用したいバージョンのディレクトリに入り、zipファイルをダウンロード、展開した後、.rncファイルのみを(管理者権限で)/usr/share/emacs/site-lisp/nxml-mode/schema//usr/share/emacs/etc/nxml-mode/schema/の下など*2に入れ、既存のファイルを上書きする。
バージョン5のリリース候補の場合は
http://docbook.org/schemas/5x.html
の「RELAX NG」から進むとファイルがある。
(2008/5/18)
http://www.docbook.org/xml/5.0/
のZipファイル(docbook-5.0.zip)をダウンロード・展開してもOK。なお、バージョン5.0は2008年2月に正式版が出ている。


nXML modeでは、Ctrl+Enterを、要素名(「<」の後)や、属性値の入力のときなどに押すことにより、名前の一部または全部が補完され、残りがある場合、「*Completions*」というパッファに候補が出るので、次の文字を入力し、Tabキーを繰り返し押して、また次の文字というように最後まで入力をし、Enterで確定させる。

使用したバージョン:

*1:名前空間が導入されたのはDocBook 5からのため

*2:環境によって異なる