SGML の書き方
fml-devel (fml 5.0) のドキュメントでは、SGML の DTD は
DOCBOOK
をごくごく普通に使うことにします。
ここでは、SGML を書くために最小限必要な知識についてメモします。
基本的な SGML の書式は、当たり前ですが、正しい HTML の書き方と同様です。
本 Appendix で、2、3の典型的な SGML テンプレートをメモしておくので、
それらを適当に切り剥ぎしていけばなんとかなるはずです。
本( book )形式のテンプレート
book スタイルの典型的な SGML のテンプレートは次のようになります。
<!doctype book public "-//OASIS//DTD DocBook V3.1//EN" [
<!entity % include SYSTEM "include.sgml"> %include;
]>
<book>
&bookinfo;
&preface;
<toc></toc>
<part>
<title> タイトル </title>
<partintro>
<para>
本パートは…目指しています。
</para>
</partintro>
<!-- 以下、各章が並ぶ -->
&overview;
</part>
</book>
part や title は文字通りの意味です。
ここで注目するべきは、SYSTEM というキーワードのある、
2 行目です。
これは include.sgml を include する命令です。
C 言語の #include や
perl の require() と同様の働きをしています。
さらに、 include.sgml の中では次のような命令が定義されています。
<!-- include する SGML ファイル群 -->
<!entity bookinfo SYSTEM "bookinfo.sgml">
<!entity overview SYSTEM "overview.sgml">
これらの定義により
&bookinfo;
命令で
bookinfo.sgml
が include されるようになります。
このようにして、文書本体と
include するべき定義ファイルを
分離することができます。
HTML の <UL> 相当
<itemizedlist>
<listitem>
<para>
アイテム1
</para>
</listitem>
<listitem>
<para>
アイテム2
</para>
</listitem>
</itemizedlist>
例えば
<itemizedlist>
<listitem>
<para>
けんけんはきたきつね
</para>
</listitem>
<listitem>
<para>
るどるどはテディベア
</para>
</listitem>
</itemizedlist>
は次のようになります。
けんけんはきたきつね
るどるどはテディベア
数字付のアイテムは orderedlist です。
けんけんはきたきつね
るどるどはテディベア
HTML の <TABLE> 相当
<para>
<table>
<title> テーブルのタイトル </title>
<tgroup cols=2>
<thead>
<row>
<entry> キー </entry>
<entry> 値 </entry>
</row>
</thead>
<tbody>
<row>
<entry> キー 1 </entry>
<entry> 値 1 </entry>
</row>
<row>
<entry> キー 2 </entry>
<entry> 値 2 </entry>
</row>
</tbody>
</tgroup>
</table>
</para>
例えば
<para>
<table>
<title> table description </title>
<tgroup cols=2>
<thead>
<row>
<entry> 名前 </entry>
<entry> 説明 </entry>
</row>
</thead>
<tbody>
<row>
<entry> けんけん </entry>
<entry> きたきつね </entry>
</row>
<row>
<entry> るど </entry>
<entry> テディベア </entry>
</row>
</tbody>
</tgroup>
</table>
</para>
は次のようになります。
テーブルの見本
名前
説明
けんけん
きたきつね
るど
テディベア
ツール群
SGML を HTML などに翻訳するために、いくつかのツールが必要です。
僕は、これらのプログラムを使っています。
openjade 1.3
opensp 1.3.4
SGMLtools-Lite 3.0.2
多くの OS では附属のパッケージシステムで一発ポン!てなもんでしょう。
適宜、これらのプログラムをインストール後、
fml/doc/share/sgml/catalog.sample
を参考にして
/etc/sgml/catalog を編集する必要があるかも知れません。
SGML からの変換には
fml/doc/share/sgml/ にある fml.dtd fml.dsl も使っています。
これらは各 Makefile 内に
定義(jade に与えるオプション -c や -d オプション)が記述されています。
NetBSD 1.5-stable 系列(およびそれ以前のバージョン)上で
openjade を compile するには unproven-pthreads が必要ですが、
以前作った時の変な include ファイルが残っていて
openjade をうまく compile できないことがありました。
うまくいかない時はまっさらにして全部やり直してみましょう。
見栄えを変更する
SGML は論理的な構造を記述している言語です。
HTML の各ページに URL をつけたいとか、画像をつけたいといった
”見栄えの記述”は直接はできません。
そこで、見栄えは DSL により記述をすることになります。
しかしながら、DSL は本質的に LISP (List Processre) 言語なので、
LISP を知らないとちょっと手が出ないでしょう。
見栄えは誰かが頑張った結果だけ使えということなのかもしれません。
ちなみに fml 5.0 の DSL の記述は
fml/doc/share/sgml/fml.dsl
にあります。
こういったものを書かないと見栄えを変えることができません ;)
その他の情報源
SGML の書き方については
FreeBSD の初心者向けチュートリアル
などを参照して下さい。
SGML のタグの一覧は
DOCBOOK definitive guide (O'reilly)
のオンライン版を参照すると良いでしょう。