DocBook文書について
ここでは、DocBook文書の概要などの抽象的な話と、文書例のみを扱い、変換ツールやその作業などについては触れない。
概要と特徴
色々なところに概要は載っている。
- http://ja.wikipedia.org/wiki/DocBook
- http://www-06.ibm.com/jp/developerworks/linux/010209/j_l-docbk.html
- http://www.linux.or.jp/JF/JFdocs/docbook-intro/
SGMLもしくはXML(今後はXMLのみ)というマークアップ言語の上で、DocBookの各要素(例: para)や属性(例: id)などを使用することでコード(DocBook文書)を書く。その際のルール*1は、文書型定義(DTD)に書かれているが、今後はRELAX NG(リラクシング)という言語を使用するのが主流になるようだ。
(2007/9/22)DTDやRELAX NGのような、文書構造を定義する言語は「スキーマ言語」と言い、他に、XML Schemaという形式も使用される。
- DocBook文書自体には論理構造のみを記述し、見栄えに関する記述は別のところで行う
- 書かれたDocBook文書は、ツールで色々な形式に変換して出力することが可能
- 書く上のルールは、(X)HTMLが理解できる程度であれば、それほど難しくない上、Emacs+nXML modeを使用していれば、自動的に文法チェックをしてくれたり、挿入可能な要素名や属性名の候補を出してくれたりするので、書きやすい
- スタイルシート(SGMLの場合はDSSSL、XMLの場合はXSL)により、出力に関する幅広いカスタマイズが可能
- (X)HTML形式へ出力するときには、見やすく、たどりやすいレイアウトになっている。独自のCSSを使用するようなコードを(DSSSLやXSLのスタイルシートに)書くことで、見栄えのカスタマイズもできる
取り扱うバージョン
新しめで、かつ安定している、XML版のバージョン4.4を扱うことにする。
ルート(最上位)要素について
「book(本)」もしくは「article(記事)」をルート要素として構成することが多い(chapterなども可能)。「set」をルート要素として複数のbookを含めることもできるが、あまり使われていない?
要素の一覧、意味など
英語のみ。「Reference」以下に一覧がある。chm形式を落としてxchmやGnoCHMで見るとたどりやすいかも。
要素や属性は膨大な数あるのだが、使用頻度の高いものは非常に限られるので、気にすることはないのではないかと思う。
bookの例
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> <book lang="ja"> <bookinfo> <title>タイトル</title> <author> <firstname>太郎</firstname> <surname>山田</surname> <affiliation> <address><email>taro@example.com</email></address> </affiliation> </author> <copyright> <year>2007</year> <holder>Copyright (C) Taro Yamada</holder> </copyright> <abstract> <para>この本の概要</para> </abstract> </bookinfo> <preface id="preface"> <title>前書き</title> <para>前書きの段落</para> <para>前書きの2段落目</para> </preface> <chapter id="chap1"> <title>はじめの章</title> <para>段落</para> <sect1 id="firstsect"> <title>1段階目のセクション</title> <para>1段階目のセクションの段落</para> <sect2 id="secondsect.firstsect"> <title>2段階目のセクション</title> <para>2段階目のセクションの中の段落</para> </sect2> <sect2 id="secondsect2.firstsect"> <title>2段階目のセクションの2つ目</title> <para>2段階目のセクションの2つめの中の段落</para> </sect2> </sect1> </chapter> <chapter id="chap2"> <title>2番目の章</title> <para>2番目の章の段落</para> </chapter> </book>
articleの例
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> <article lang="ja"> <articleinfo> <title>タイトル</title> <author> <firstname>太郎</firstname> <surname>山田</surname> <affiliation> <address><email>taro@example.com</email></address> </affiliation> </author> <copyright> <year>2007</year> <holder>Copyright (C) Taro Yamada</holder> </copyright> <abstract> <para>この記事の概要</para> </abstract> </articleinfo> <sect1 id="sect1"> <title>セクション1</title> <sect2 id="sect2"> <title>セクション2</title> <sect3 id="sect3"> <title>セクション3</title> <sect4 id="sect4"> <title>セクション4</title> <sect5 id="sect5"> <title>セクション5</title> <para>セクション5の段落</para> </sect5> </sect4> </sect3> </sect2> </sect1> <sect1 id="sect1-2"> <title>2つめのセクション1</title> <para>2つめのセクション1の段落</para> </sect1> </article>
setの例
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"> <set lang="ja"> <title>タイトル</title> <setinfo> <abstract> <para>全体の概要</para> </abstract> </setinfo> <book id="book1"> <bookinfo> <title>1冊目のタイトル</title> ... </bookinfo> ... </book> <book id="book2"> <bookinfo> <title>2冊目のタイトル</title> ... </bookinfo> ... </book>
関連記事:
*1:どのような意味・目的のどのような要素や属性が用意されているのか、ここで挿入できる要素はどれか、使用できる属性は何か、など