Appendix B. SGML の書き方

Table of Contents
SGML の概念
本( book )形式のテンプレート
HTML の <UL> 相当
HTML の <TABLE> 相当
ツール群
見栄えを変更する
その他の情報源

fml8 のドキュメントでは、SGML の DTD "DOCBOOK" をごくごく普通に使うことにしています。

本章は SGML で書くために最小限必要な知識についてのメモです。

基本的な SGML の書式は、当たり前 [1] ですが、正しい HTML の書き方と同様です。 本付録で、2、3 の典型的な SGML テンプレートをメモしておくので、 それらを適当に切り剥ぎしていけば、なんとかなるはずです。

SGML の概念

SGML は本や短い文書(記事)を作成する際に使われます。 文章の論理構造を記述するための規格です。 HTML のもっと厳密なものだと思って下さい。 [2]

たとえば、”本”という概念を考えてみます。 まず”本”には章、節といった構成単位があります。 節の中にはパラグラフがありますし、文には脚注がついたり、 図などが挟み込まれたりします。

これらの概念には、ある関係があります。 たとえば”章”は”節”を含みますが、”節”は”章”を含みません。 そして、文は必ず「あるパラグラフ」の中に「ある」ものです。

そういった概念をどう表現するべきか?を規定したものが DTD (Data Type Definition)といえます。

DTD は自由に定義できますが、定義自体が大変な作業です。 しかしながら 誰かが作った DTD コレクションが世の中にはあるので、それを 使うのが便利です。 我々は DTD として docbook というものを使う [3] ことにしています。

DOCBOOK は OASIS-0PEN.ORG が保守している DTD 集です。非常に有名なもの で、デファクトスタンダードといってもよいでしょう。(わかりやすいかどう かは別として;)リファレンスがオライリーから本も出ていますし、ドキュメン トも豊富です。Free の Unix などをはじめ、多くのプロジェクトで使われて います。

つまり、SGML を使うことで得られる最大の意義は「ある基準となるもの」に 規格化ないしは強制されるということです。これは SGML の構文による規制と いう意味ではありません。ある概念に従うことに強制されようということです。

ここで”概念”といっているのであって、”見栄え”については ふれていないことに注意して下さい。 たとえば HTML では概念と見栄えは(むしろ意識的に)はっきり分離していません。

見栄えは DTD とは別の何かで定義されます。 通常スタイルシートというものです。 HTML 4.0 の CSS と同じ概念です。

スタイルシートの記述にもプログラミング言語が必要です。 docbook では schema (lisp の一種) ベースの DSSSL (Document Style Semantics and Specification Language) を使います。

また SGML では論理構造しか記述しないので見栄えはコンバータ次第で どうとでもなります。 HTML、テキスト、ROFF、PS、PDF、RTF を始め、 いろいろなものへ変換するやり方が用意されています。

Notes

[1]

HTML は SGML 形式の応用の(最も有名な)一例です。 そのため本質的なシンタックスは HTML と同じということになります。

[2]

正確には「SGML の一部にフォーマッタの要素が合体したもの」が HTML です。 HTML の方がはるかに有名になってしまったので、 「HTML のもっと厳密なもの…」といった説明が良くされます :)

[3]

我々が DOCBOOK を選んだ理由は簡単で、 多くの場所で使われているからです。 つまり、docbook のタグを書ける人が世の中に多いという意味でもあります。

fml 8.0 (fml-devel) project homepage is www.fml.org/software/fml8/.
fml 4.0 project homepage is www.fml.org/software/fml4/.
about one floppy bsd routers, see www.bsdrouter.org/.
other free softwares are found at www.fml.org/software/.

author's homepage is www.fml.org/home/fukachan/.
Also, visit nuinui's world :) at www.nuinui.net.

For questions about FML, e-mail <fml-bugs@fml.org>.