レベル: 初級 David Mertz, Ph.D (mertz@gnosis.cx), Author, Gnosis Software, Inc.
2000年 10月 01日 「XMLの論考」コラムの3回目のこの記事で、David Mertz氏は、技術文書および他の文書を記述するDocBook (SGML/XMLの派生言語の1つ) について紹介します。David Mertz氏は、DocBookを使うことの利点とともに、大規模な文書の変換作業を計画しモジュール化する方法を解説してくれます。
100年後の歴史家が電子文書の書庫を発見し、それらを解読しなければならない様子を想像してみてください。今後1世紀間続く技術の急激な変化の結果、歴史家は膨大な数のピースのパズルを作り上げるような作業を行う羽目になることでしょう。しかし、必ずそうなるという訳ではありません。
このコラムは、私自身の実際の関心事から生まれました。数年に渡って、私は人文科学に関する学術論文を書いてきました。そして、それらを自分のWebサイトで閲覧できるようにしたいと考えています。しかし、残念ながら、この数年の間に私はワード・プロセッサーを数回変え、使用するプラットフォームもたびたび変更しました。そして、多くの文書は、すでに私が持っていないプログラムまたは入手不可能なプログラムを使用して保存されたものです。仮にそれらのプログラムを入手できたとしても、現在のコンピューターでは実行できないことでしょう。都合良く、実行可能なプログラムのファイル・フォーマットに変換してくれる変換プログラムを見つけ出すことができた場合もありました。そうでない場合は、元のワード・プロセッサーのフォーマット (ほとんどが、いくらかの体裁上の情報が埋め込まれたASCIIフォーマット) を使用してきました。
簡単に言えば、私の電子アーカイブは非常に乱雑であるということです。そして、多くの個人や組織も同じようにアーカイブのひどい状態のために被害を被っています。ソフトウェアがアップグレードされるたびに、多くの組織は技術面での変更と引き換えに重要なアーカイブ文書を大量に失っていることになります。そして、問題は時間の経過とともに積み重ねられていきます。
しかし幸いなことに、我々はこれまで私がしてきたよりもずっと優れた方法で年月を越えていく文書を作成することができます。一般的にはXML/SGML、特にDocBookは、柔軟で永続的な文書を作成するための優れた方法です。
DocBookとは ?
DocBookは、1991年にO'Reilly and HaL Computer Systemsによって開発されたSGMLの一言語です。現在は、Organization for the Advancement of Structured Information Standards (OASIS) が保守管理しています。DocBookは、論文、書籍、技術文書、および他の資料を作成する場合に使用されます。DocBookは技術文書のフォーマットに焦点を合わせたものですが、一般的な文書にも十分使用できます。この記事では、XML形式のDocBook DTDについて検討します。
時間の経過に耐える文書を実現するための基本的かつ究極的なキーは、文書フォーマットにXML/SGMLのようなオープン・スタンダードを使用することです。このようなオープン・スタンダードは次に示す2つの要素から構成されます。
- シンタックス すなわち文書の体裁
- セマンティクス すなわち文書の意味
DocBook文書のシンタックスはすべて、XMLマークアップのシンプルな規則、およびすべてのDocBook文書に備わっているDocBook DTDに組み込まれています。セマンティクスは若干異なります。たとえば、DTDには他のエレメントの中に置くことのできる、または置く必要のあるエレメントを決定する特定のセマンティクスが組み込まれています。DocBookタグは、少なくとも英語圏の人には、ある程度の「常識」的なセマンティクスとなるように決められています。しかし、セマンティクスの詳細を決めるには、特別な資料の指針や、共通の使用上の規則、さらには編集上の判断 (たとえば、テキストの特定の位置に適切なリストのタイプの管理など) が必要となります。参考文献で示されているDocBookの資料は、一般的なセマンティクスのガイドラインを示していますが、多くの種類の文書にはさらに固有のガイドラインが必要になることに注意してください。
2番目のキーは、理論的な重要性においては若干劣りますが、実際の重要性の点においては考慮に値します。文書フォーマットを解釈し、正式な仕様以外で使用するのは簡単でしょうか ? テキスト・ビューアーを使用して、以前のバイナリー・ストリーム・フォーマットを理解するのは困難です。しかし、XML文書は、正式な検証および処理がなされていない場合でも非常に分かりやすいと言えます。もちろん、プレーンなASCIIであればさらに分かりやすいものとなります。
さらに、あるフォーマットは、たとえその正式な仕様がないとしても、他のフォーマットよりも復元が容易です。先の歴史家が2種類の文書 (1つはMSDNファイル・フォーマット仕様CDの付いたMS Word 97フォーマットの文書で、もう1つはDTDのないXMLフォーマットの文書) を見つけたと想像してみてください。明らかに、この歴史家はXML文書の内容の方をより簡単に復元できることでしょう。事実、フォーマットの仕様があるにも関わらず、Word 97コンバーターを作成する点で成功している会社はない (Microsoftですらできない) のです。もし 自分の雇用者がワークステーションをすべてMS Office 2005に「アップグレード」したために、5年後に自分の文書を復元しなければならなくなったらどうなるか想像してみてください。
移植性の問題と技術上の変更を考慮に入れて、私は過去の学術論文をDocBookフォーマットに移していくことに取り掛かりました。私はこの作業により、自分の論文が長期保存され、現在そして将来の文書フォーマットで参照できる (変換プログラムによって) ことを信じています。
セマンティクスの柔軟性
DocBook文書は文書のセマンティクスを示すものであって、印刷上の体裁を定義するものではないことを覚えておくことは重要です。このように文書のセマンティクスに照準を合わせる方法は、ワード・プロセッサー、HTML、さらにTeXとさえ対照をなします。ワード・プロセッサーでは、"Header, Level 2" のような概念上のカテゴリーを付けるのに役立つスタイル・シートを使用できるものもありますが、ほとんどが "What You See Is What You Get" (WYSIWYG) を実現することを目指しています。スタイル・シートも、文書間で共通であることはほとんどありません。こうした方法では、ページ・サイズ、レイアウト、使用可能なフォント、および要素のタイプ・スタイルなどについて大まかに定めるに過ぎません。これらの情報の多くは、テキストの実際の概念上の意味に関して何の役にも立ちません。さらに、そうした情報はほとんどの場合、文書を別のフォーマット (異なる印刷レイアウト、ソフトコピー形式、音声合成形式、またはWebロボットの索引など) に適応するのを難しくします。HTMLは、もともとはDocBookと同種 (しかし、より単純) でしたが、いろいろな印刷上のタグがつめ込まれ、現在はセマンティクスと印刷情報のごった混ぜとなってしまいました (たとえば、<h2> と<b>)。
分かりやすい例として、印刷された資料では、多くの異なる概念を表すエレメントをイタリックで表します。資料が異なれば規則も異なりますが、以下に示すDocBookタグはすべて、実際に組版されるときにはイタリックとなります。
<emphasis>
<abbrev>
<citetitle>
<foreignphrase>
<classname>
<email>
|
もちろん、これらのうちのどれかがこの方式で扱われない場合もあります。これらの要素がどのように処理されるかは、テキストに指定される概念上の意味によって異なります。実際、これらを決定するのは、出版業者や本の企画者であって著者ではありません。DocBookは、WYSIWYG形式で要素を表現せずに、文書の基本構造を表します。内容と体裁を分離することに加えて、DocBook方式の概念を表すマークアップを使用するとエレメント・タイプを系統立てて処理することができます。たとえば、自分の資料の中の外国語の句の用語集を作成しようとする場合、<foreignphrase> タグのすべての出現個所を検索するだけで済みます。これがワード・プロセッサーであれば、イタリックになっているすべての句を検索するという、効率の悪い方法をとらなければなりません。
位置について、用意、マークアップ !
まず最初に行うのは、自分の博士論文をDocBookに変換する作業です。これは大規模な作業ですが、少しずつ行っていくつもりです。論文のように非常に長いものに加えて、個々の文書で文書化システムに関するそれぞれの問題が生じます。次のようなものがあげられます。
- ローマ字の区分的発音符を必要とする名前(しかし、非ヨーロッパ文字セットではない)
- 脚注および相互参照
- ページ番号
- 多重構造のセクション・レベル
- 題辞
- 参考文献
- 付録
- 献辞および要約
- 数学上の表記
- 他の資料、URL、Eメール・アドレスへの言及
- 特定目的のための特別なレイアウト
- 図とその解説 (これは、元の印刷と近いものにする必要がある)
全体的に、これまで私が執筆してきた文書では大量のDocBookタグが必要となります。論文はすでに元のWordPerfect 7フォーマットと、フォーマットの異なるPDFの2つのバージョンで参照できるようにしていますが、それぞれ移植性また柔軟性はさほど高くありません。しかし、DocBookを使えばこれらの面を改良することができます。そこでここからは、対象となるフォーマットへの変換処理ではなく、マークアップだけを取り上げていきたいと思います。
前置きはここまでにして、実際に文書を作成してみましょう。
XML文書によるMertz氏の論文
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://gnosis.cx/download/docbook/4.12/docbookx.dtd" [
<!ENTITY bookinfo SYSTEM "bookinfo.sgm">
<!ENTITY abstract SYSTEM "abstract.sgm">
<!ENTITY chap1 SYSTEM "chap1.sgm">
<!ENTITY chap2 SYSTEM "chap2.sgm">
<!ENTITY chap3 SYSTEM "chap3.sgm">
<!ENTITY chap4 SYSTEM "chap4.sgm">
<!ENTITY chap5 SYSTEM "chap5.sgm">
<!ENTITY chap5_1 SYSTEM "chap5_1.sgm">
<!ENTITY chap5_2 SYSTEM "chap5_2.sgm">
<!ENTITY chap5_3 SYSTEM "chap5_3.sgm">
<!ENTITY chap6 SYSTEM "chap6.sgm">
<!ENTITY chap7 SYSTEM "chap7.sgm">
<!ENTITY chap8 SYSTEM "chap8.sgm">
<!ENTITY appendix1 SYSTEM "appendix1.sgm">
<!ENTITY appendix2 SYSTEM "appendix2.sgm">
<!ENTITY biblio SYSTEM "biblio.sgm">
<!ENTITY Zizek "Žižek">
<!ENTITY Mocnik "Močnik">
]>
<book>
&bookinfo;
&chap1;
&chap2;
&chap3;
&chap4;
&chap5;
&chap6;
&chap7;
&chap8;
&appendix1;
&appendix2;
&biblio;
</book>
|
ご覧のとおり、最初の段階はほとんどがプランニングです。コンポーネント・レベルのエレメント (たとえば、章など) の目次を作成することが、実際の作業となるでしょう。しかし私の場合は、これらのコンポーネント・レベルのエレメントに対するエンティティー参照を作成することにより、自分の作品をさらに管理しやすい単位に分けました。さらに、出版またはエクスポートを容易にするために、個々の章を別個の文書にしました。この最初の段階では、作成される文書のタイプは書籍で、外部ファイルを参照する一連のコンポーネント・レベル・エレメントを組み込むことを指定しました。
このトップ・レベルに定義されるエンティティーの中には、直接には使用されず、組み込みファイルの中でだけ使用されるものがあります。たとえば、エンティティー&abstract; はbookinfo.sgm文書の中にだけ挿入されます。このことは、Chapter 5内のセクションに関しても同様です。これは私の個人的な意見ですが、別個に出版する文書は別個のファイルにする必要があると考えていました。このDocBook計画を進めていくにつれて、他にも調整を行うことになるでしょう。
さらに、文書中で使用されるUS-ASCIIに適合しない名前を定義しました。この区別的発音符を直接入力することはできませんが、たとえば、&Zizek; と入力して、実際に表したいことの簡単な省略形を使用することができます。句全体の省略語を使用することもできます。
組み込み
サンプル・コードが示しているように、マスター文書の設定で組み込まれるファイルは、文書のルート・タグとそのコンテンツで構成されます。組み込みファイルに、文書型宣言または処理命令を含める必要はありません。文書タイプはすでにマスター文書で宣言されており、一箇所で管理できます。たとえば、bookinfo.sgmファイルには次に示すものしか入りません。
Included XML/SGML subdocument
<bookinfo>
<title>The Speculum and The Scalpel</title>
<subtitle>The Politics of Impotent Representation and
Non-Representational Terrorism</subtitle>
<author><firstname>David</firstname><surname>Mertz</surname></author>
&abstract;
</bookinfo>
|
同じように、それぞれ章のファイルは、<chapter> タグで始まり、</chapter> タグで終了します。
繰り返しになりますが、このモジュール化構造の最大の利点は、資料ごとに個々のコンポーネントを取り出すことが容易であるということです。たとえば私は、別の配布資料として、5章を変更したものを用意するつもりです。そのため、以下に示すようなその章だけの小さなラッパーを作成しました。
章レベルのサブ文書ラッパー
<?xml version="1.0"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"file://g:/articles/scratch/docbook/4.12/docbookx.dtd" [
<!ENTITY chap5_1 SYSTEM "chap5_1.sgm">
<!ENTITY chap5_2 SYSTEM "chap5_2.sgm">
<!ENTITY chap5_3 SYSTEM "chap5_3.sgm">
]>
<chapter>
<title>Hegemony, and Other Passing Fads</title>
<epigraph>
<attribution>Gould, 1987b, quoting Gunnar Myrdal, <citetitle>An
American Dilemma</citetitle> (1944)</attribution>
<para>But there must be still other countless errors of the same
sort that no living man can yet detect, because of the fog within which
our type of Western culture envelops us. Cultural influences have set
up the assumptions about the mind, the body, and the universe with which
we begin; pose the questions we ask; influence the facts we seek;
determine the interpretations we give these facts; and direct our
reaction to these interpretations and conclusions.</para>
</epigraph>
&chap5_1;
&chap5_2;
&chap5_3;
</chapter>
|
マークアップされるコンテンツの大部分は、3つのセクションにあり、ルートとしてそれぞれトップレベルsect1 が指定されています。しかし、同じセクションのコンテンツを、書籍レベルまたは章レベルのラッパーの一部として処理することもできます。また、Section 2を章と同じ構造の別の記事として出版することもできます。
継続的な教育
この記事では、DocBookを大まかに理解するために必要な情報を提供しました。続く記事では、DocBookタグについて詳しく取り上げ、そのタグ構造について説明します。さらに直接読み取りやすい形式にDocBook文書を変換する方法、それを検証する方法や処理操作を実行する方法について今後検討する必要があるでしょう。お見逃しなく !
それまでは、参考文献にリストされているDocBookの参考資料の中からいくつかを選んで読み始めておくと良いでしょう。DocBookには多くのタグがあり、それらすべてを覚えることは恐らくできません。このため、DocBookを処理するときには、たとえ編集のための特殊なツールを使用する場合でも、解説書を手元に置いておくとよいでしょう。いったん、必要なタグのタイプと、それらを使用する方法について理解できれば、作業はさらに簡単になるでしょう。
参考文献
- DocBookについてさらに詳しく理解するためにまずお勧めするのは、DocBook: The Definitive Guide, Norman Walsh & Leonard Muellner, O'Reilly, Cambridge, MA 1999です。この資料のオンライン版も参照できます。
- OASIS (Organization for the Advancement of Structured Information Standards) は、XMLやSGMLのような規格標準に基づいて産業界で広く使用できる仕様を作成する 非営利の国際団体です。この団体の使命はこのような標準規格の使用を促進することです。OASISのWebサイトには、この団体と推奨する標準規格に関するさらに詳しい情報があります。
- いくらかの点では、プレーンASCIIまたは "smart ASCII" (usenetで発展したシンプルな形式で注釈を付ける方法) の形式の方がDocBookよりも移植性および耐時間性が高いと言えます。もちろん、ASCII形式ではDocBookのすべてのセマンティクス構造を取り入れることはできませんが、それらを必要としない場合が多いのも事実です。Project Gutenberg は、テキストをこのニュートラルな方式で保存し活用することを試みている一例です。
-
TeX は、DocBookと目的が重なる重要なツールです。TeXはより体裁に照準を合わせたものですが、TeXにも多くのセマンティクスをマークアップするためのエレメント (特に数学的なもの) があります。
- この記事のドラフトを含め、私自身の論文は、元々 "smart ASCII" 形式に似たものを使用しています。マークアップはTxt2Htmlツールを使用して自動的に処理します。この記事のテキスト版もご覧ください。
- 私が変換を行った分かりにくい哲学的な論文の内容には、ほとんどのXML開発者は関心を持たないでしょうが、使用している実際の形式には関心を持つことでしょう。文書は元々WordPerfect 7で作成したものに、部分的に他のワード・プロセッサーからインポートしたものが含まれています。全面的な変更を簡単にするために、重要なエレメントにスタイル・シートを使用するには努力を要しました。Web出版にあたって、提出した論文よりも雑誌の印刷記事に近い体裁のPDFフォーマットで文書を出力しました。PDFは悪いフォーマットではありませんが、コンテンツとレイアウトが分離していません。PDFフォーマットまたはWordPerfect 7フォーマットの元の論文をご覧ください。
- この記事で使用および言及したファイルは、XML Matters #3 files にあります。
著者について  | 
|  | David Mertz氏は多くの分野で活躍しています。ソフトウェア開発や、それについて著述もしています。その他、学術政策理念について分野を問わず、関係する雑誌に記事も書いています。かなり以前には、超限集合論、ロジック、モデル理論などを研究していました。その後、労働組合組織者として活動していました。そして、David Mertz氏自身は人生の半ばにもまだ達していないと思っているので、これから何かほかの仕事をするかもしれません。 |
記事の評価
|