なお、未だSGMLが知られていない、あるいは誤解されている理由も理解できる 。それは、1)SGMLは直訳すると「標準汎用マーク付け言語」となるが、これだけ では内容が分からない、2)SGMLが直接関連する事柄だけでも、印刷・出版、文書 データベースないし全文データベース、文書記述法、規格など多方面に渡るため 、全体像を把握し難い、2)適用対象は文書一般で、マニュアルなどの技術文書か ら、議会の議事録、シェークスピア全集まで分野を問わないため、そのような異 質なものが扱えるのかという疑問を持たれることがある、3)具体的・実務的な部 分だけでなく、抽象的な概念も含むため分かりにくい、4)Mosaicのデータ入力形 式でHTML(HyperText Markup Language)があるが、それがSGMLと似ているため、SGML とHTMLが同じものと誤解されることがある、などの特徴をSGMLは持っているから である。そこで本稿では、この種の誤解を解くことを主眼として、SGMLを解説す ることにした。
日本でのSGML方式出版[6]は、90年12月の情報知識学会誌[7,8]、91年3月に出 版された訳本「SGML入門」[9]、同時期に学術情報センターによって試作された 「SGML実験誌」[10]などを先駆とし、92年4月出版の訳本「実践SGML」[11]、慶 応大学図書館によるCD-ROM版三田商学研究(和文誌と欧文誌の最近5年分150論文 )の試作[12](92年7月)、学術情報センター紀要の第5巻(92年12月)を経て、93年1 月からの日本化学会欧文論文誌(Bulletin of the Chemical Society of Japan, BCSJ) の定期印刷刊行[13-17]に至る。BCSJは月刊で毎号60論文を収録する大論文誌で ある。日本化学会という大学会が、SGML方式を採用したことは、日本でもSGML方 式が実用化したことを示している。なお、BCSJのCD-ROM版[14,15,18]も試作され た。そしてWWW Mosaic版も試作され、94年10月末から95年1月末まで期間限定で テスト公開されている。
またDTDの設計では、上記のプロジェクトに加えて、学術情報センターが学術 論文用の汎用DTDを設計したこと[6]が挙げられる。このDTDは、BCSJの全文DBを 学術情報センター全文DB検索サービスに載せる際に使用されている。
なお、著者は情報知識学会誌、SGML実験誌、学術情報センター紀要、日本化学 会欧文論文誌、学術情報センターによる学術論文用汎用DTDのプロジェクトに参 画した。
ここで、文書DBやelementはSGML特有の用語なので、簡単に説明しておく。「 文書」とは、たんなるテキストだけでなく、図表、写真、数式等々、文書に現れ る全てを含むことを表している。「文書DB」とは、文書を構造を持ったDBと考え ることを示す。文書には、章、節、段落などの階層構造があり、また、本文から 図、表、文献、注などへの参照といった参照関係がある。これらの構造を表現し たものを文書DBという。そして、elementとはDBの構成要素である。ただし、章 も節も段落もelementと言い、章は節で、節は段落で構成されていると言うから 、elementといっても最小単位ではない。
なぜ、文書DBを導入したか。その理由は、印刷物、CD-ROM、検索用DBなど多様 な電子出版を行うには文書DBを基にした方が効率的だからである。以前は、印刷 といえば電算写植(CTS)で、全文DBを作る場合は電算写植データからプログラム で変換して作っていた。しかし電算写植では、1)図表、写真などは別扱いのため 、プログラムで生成できるのはテキスト部分のみとなる、2)電算写植データは印 刷・レイアウトのためのデータ(ゴチック、14ポイント、センタリング等の印刷 制御コマンド込みのテキスト)であって、それがどの項目(たとえば、章のタイ トル)かは書いてないため、どの項目かを判定しきれない場合もあり得るし、レ イアウトが異なってタイトルでも左寄せになればプログラムの書き直しになる、3) 印刷制御コマンドはハード・ソフト個別のため、それごとに変換ソフトを作る必 要がある、などの欠点があった。SGML方式はこれらの欠点を解消する。
以上説明したように、SGMLの技術は文書DB構築のための技術であって、印刷の 機能やデータベース検索機能とは切り離されている。このことは、SGMLに対する 誤解を呼ぶ種となった。たとえば、印刷出版だけに興味を持つ人は、印刷機能を 持たないことに失望を感じたかもしれない。また、データベースのみに興味を持 つ人は、検索機能がないことに意外な感じを持っただろう。しかし、今ではこの 機能分担は寧ろ正解であったといえる。その後に進歩した印刷ソフトや検索ソフ トの多くがSGML文書DBに対応するようになったからである。
前節(3.1)に述べたように、文書DBの構造には階層構造と参照関係があるが、 階層構造にはelement間の前後関係も存在する。たとえば、文書では、「本のタ イトル」、「本体」、「索引」の順になり、これが逆転することはない。また、 「章」は「章のタイトル」と「章の本体」から構成されるが、「章のタイトル」 の方が先に来る。
ここで「ディジタル図書館における基本出版技法:SGML」というタイトルの解 説(仮にreviewと名付ける)があるとして、これを例にしてDTDとテキスト・デー タを説明する。この解説が収録されている逐次刊行物「ディジタル図書館」の印 刷様式から推定して、文書は図1に示す 階層構造を持つとする。すなわち、review はfront matter(前付, fmと略), body(本文, bdy), back matter(後付, bm)という3つの要素(element)が、こ の順で並んでいるとする。また、fmは要素:title,author, affiliation, abstractの順で構成される。bdy は章で、章は節で、節は段落で構成される。 あるいは直接段落となってもよい。等々とする。
図1. 解説"review"の階層構造
図2の各行はELEMENT文で、個々の要素がどの要素から構成されるかを定義して いる。なお、図1では章のタイトル(chpti)は省略したが、DTDでは要素に加えて ある。また、refのELEMENT文は省略してある。
<!ELEMENT review - - (fm, bdy, bm?)> <!ELEMENT fm - O (ti, aut, afl, abs)> <!ELEMENT bdy - O (chp+|sec+|p+)> <!ELEMENT bm - O (ref?)> <!ELEMENT chp - O (chpti, (sec+|p+))> <!ELEMENT p - O (#PCDATA)+> 図2. "review"の階層構造を表現したDTD
SGMLの文法では、大文字小文字は同じものとして扱われる。ここでは要素の名 前が目立つように小文字にしてみただけである。ここで使われている要素名は省 略した名前で分かりにくいと思う読者も少なくないだろう。要素名はDTDのELEMENT 文で定義するのであるから、分かりやすい名前を定義してもよい。通常は名前の 長さは8文字以下と定められているが、DTDで長さを変えることも可能である。 また名前の頭の文字はAからZ(小文字でもよい)であるが、その後ろにはAからZの ほかに、数字、ピリオド、ハイフンなども使うことができる。この範囲で適当な 名前を考えればよい。
ELEMENT文の形式は、<!、ELEMENT、要素名、開始・終了タグ省略の有無、開始 タグから終了タグの間に出現できる構成要素、> である。図2の1行目の記述は 、reviewという要素はfm, bdy, bmという3つの要素で構成され、また、この順 で出現することを示している。fm, bdy についても同様である。なお、#PCDATA とは解析対象文字データという意味で、予約語である。データ中に実体参照や開 始タグなどのマークを含んでいるかどうかをSGMLパーサが解析する必要があるこ とを示す。#は予約語を示す記号である。SGMLパーサについては後で説明する。
これらELEMENT文の記述は図と同じことを表現しているが、DTDの方が構造をよ り厳密に記述できる。例えば、存在しなくともよいもの(optional,出現頻度0ま たは1)は"?"で示す。bm, refなどはoptionalである。また、章や段落などは一回 以上繰り返し出現する(1からN回)が、これは"+"で示す。なお、無いこともあり 、繰り返すこともある場合(0-N回)は"*"で示す。また、構成要素によっては順に 現れるのではなく、どちらかが現れる場合もある。これは|(OR記号, 縦棒)で 表現する。このほか &(AND記号)もあるが、これは&の両側の要素が必ず現れるこ と、ただし順序はどちらでもよいことを示す。
開始・終了タグ省略の有無についても説明しておく。2行目は"- -" 、3行目 は"- O" となっている。左は開始タグ、右は終了タグを示し、"-"は省略できな いことを、"O"はomitted を示す。たとえば、要素reviewは開始・終了タグとも に省略できないことを、fmは終了タグは省略できることを示す。なお、開始タグ 、終了タグは文書テキストの所で説明する。
なお、文書は、単行本、論文、レポートなど文書の種類によって、その構造が 異なるから、種類ごとにDTDは異なる。DTDを自分で書くにはSGMLの構文を知る必 要があるが、種類によってはDTDが既に用意されていることがある。その場合は 、それを使えばよく、自分で書く必要はない。
なお、文章中に記号として"<"や">"を使いたくなることもある。その時は、DTD で"<"を<、">"を>と定義しておけば、<や>と書けばよい。ここで、lt はlower than、gtはgreater thanを意味している。この手法は、外字を定義する のにも使える。
ところで、図3のようなマーク付き原稿を作るのは面倒と思われるであろう。 実際には、<要素名>, </要素名>無しにテキストを入力する方法があるから安心 してほしい。たとえば、「SGML対応エディタ」の使用、自分で違和感のない記号 をDTDで定義し、その記号を正規の開始・終了タグにソフトで変換する方法など があるし、最近ではワープロ原稿からの自動変換[24]もある。
<review> <fm> <ti>ディジタル図書館における基本出版技法:SGML <aut>石塚英弘 <afl>図書館情報大学 (中略) <abs>SGMLは電子出版のための基本技法で........ (中略) <bdy><chp><chpti>はじめに <p>本稿では、SGML.....(中略).....について解説する。 <p>なお、未だSGMLが.....(中略).....することにした。 <chp><chpti>SGML方式出版の成立と普及 <p>SGML方式による出版の事例.....(中略).....後で解説する。 (中略) <chp><chpti>SGMLとSGML方式電子出版 <sec><secti>SGML方式電子出版 <p>全体像を把握してもらうため、.....(中略).....説明した。 (中略) </review> 図3. "review"のテキスト・データ
そこでSGML方式では次のようにして非階層構造も表現できるようになっている 。
1)浮動要素の定義
まず、図や注などが文書データベース中の任意の場所に存在できることをDTD で定義しておく必要がある。これは例えば次のようにして行う。
<!ENTITY % floats "fig|fn"> <!ELEMENT review - - (fm, bdy, bm?) +(%floats;)>ここで、%はパラメータ・エンティティを示す記号である。第1行は %floatsと いう名前のパラメータの値はfigまたはfnであることを定義しており、%floatsの 内容は図や脚注とするという意味になる。2行目の"+"は包含(inclusions)を示 し、任意の場所に()内のものが存在してよいことを意味する。%floatsの後ろに";" が付いているのは、%など記号で始まるエンティテイを引用する時は最後に;を付 けることになっているからである。
2)IDを使った参照
これは、被参照データと参照指示データとをIDを使ってリンクする方法である 。IDの操作はSGMLの属性機能を使って行う。note(注)を例として説明する。
DTDのうち、被参照データについては、
<!ELEMENT note - - (p)> <!ATTLIST note id ID #IMPLIED>と定義する。ここで、ATTLIST 文は属性リストを宣言する文で、その形式は、 <!、ATTLIST、要素名、属性名、属性の宣言値、属性の省略時値、> である。ま た、属性名から属性の省略時値までは組で繰り返し可能である。noteの場合は、 要素noteがidという属性名を持ち、それはID (identifier value、識別子値) で あり、属性値が与えられていない場合は #IMPLIED(アプリケーションが省略時値 を決める)であることを示す。
参照指示データは、noteのreferという意味で要素名をntref にすれば、
<!ELEMENT ntref - O EMPTY> <!ATTLIST ntref refid IDREF #IMPLIED>と定義される。ここで、EMPTYとは構成要素が無いことを示し、IDREF(identifier reference value、識別子参照値)は被参照データの識別子を参照することを示す 。
そして、被参照データの記述は、たとえば、
<note id=note1>開発者3人の頭文字を並べたものでもある。</note>となり、本文の方の記述は
....汎用マーク付け言語GML<ntref refid=note1> はマニュアルや仕様書....となる。この方式ならば、
....GML<ntref refid=note1> 以外でもシステムの命名の仕方には....のように、本文の別の所で同じ注を参照することができる。
3)図や画像の取り扱い
図や画像は、その番号・キャプション・図や画像の本体で構成される。番号や キャプションは文字データである。しかし、図や画像の本体はドット・データす なわちビット・データであることが多く、SGMLによる解析の対象外である。その ため、次に示すように取り扱いが少し異なる。
a)図や画像のデータは別ファイルに置く。
b)図や画像の表現形式には、PICT, EPS, TIFFなどがあるので、それを区別する 必要がある。
c)図や画像の大きさを指定する必要がある。
<!ELEMENT figure - - (nf?, figcp?, figbdy?)> <!ATTLIST figure id ID #IMPLIED file CDATA #IMPLIED type CDATA #IMPLIED sizex CDATA #IMPLIED sizey CDATA #IMPLIED> <!ELEMENT figref - O EMPTY > <!ATTLIST figref refid IDREF #IMPLIED> 図4. 図のDTD
図4に図の場合のDTDを示したが、画像でも基本的に同じである。nfは図の番号 、figcpはキャプション、figbdyは図本体である。キャプションには図のタイト ルと説明が含まれている。fileはファイル名で、その値は例えば、"b:¥figure¥figure1.dat" のようになる。ここで、"b:¥..."はディスクドライブB のディレクトリfigureに あるfigure1.dat というファイルとして保管されていることを示す。なお、CDATA とは予約語でSGMLの解析対象外の文字データのことである。typeはPICTほか表現 形式を示す。図の大きさはsizexとsyzeyで表す。要素figrefとその属性について は既に述べた手法と同じである。
4)その他の非階層構造
表はDTDで定義し、それに従って表そのもののデータを書き、属性を用いて参 照すればよい。紙面の都合上、説明は割愛する。また、それ以外の非階層的な構 造の定義も属性を用いて行う。Bryanの本[9]に詳しく書かれているので、詳細に ついてはそれを参照されたい。
ところで名前の由来であるが、SGMLでは文書を構造化するためにelementを識 別するが、それに開始タグと終了タグを用いた。これがgeneralized markupであ る。本来mark upとは、センタリング、フォントや字の大きさの指定などを編集 者が赤字で書き込むことであった。これを電子的に指定するのでmarkupと一語に し、また構造を指定することにより、印刷用のハード・ソフトの個別のコマンド から自由になり、一般化(generalized)された。そこで、generalized markupと なった。languageは言語を、standardはISOのような標準となったことを示す。 確かに分かりにくい名前ではある。
SGML文書DBとHTMLの違いを示すために、先程示した解説のSGMLのテキスト・デ ータをHTML形式に書き換えて、図5に示す。文書のタイプは一つしかないから、 最初は<HTML>で最後は</HTML>となる。<H1>, <H2>はヘディング(見出し)で、1, 2, 3の3段階ある。1の方が字が大きい。<B>を使えば、ボールド(太字)にな る。どう使い分けるかはデザインの問題である。段落は終わりに<P>を付けるこ とになっている。
参照関係は、参照箇所の文字列を<A HREF="refid.html">と</A>で挟む。ここ で、Aはアンカー(錨の意味、ハイパーテキストのリンク元を示す)のAである。 また、""内は被参照データの場所を示す。
ここに示した例は説明用のごく簡単なもので、もっと凝ればより良いものがで きることを指摘しておく。
SGML文書DBの方がDBとしてより詳しい情報を持っている。そのため、SGML文書DB からHTMLはプログラムで生成することができる。しかし、その逆は難しい。その ため、HTMLで文書を保持するよりも、SGML文書DBで持っていた方がよい。HTMLの 方は検索表示用と考えるのが妥当であろう。
<HTML> <TITLE>ディジタル図書館における基本出版技法:SGML</TITLE> <H1>石塚英弘</H1> <H2>図書館情報大学</H2> (中略) <H2>概要:</H2> SGMLは電子出版のための基本技法で........<P> (中略) <H1>はじめに</H1> 本稿では、SGML.....(中略).....について解説する。<P> なお、未だSGMLが.....(中略).....することにした。<P> <H1>SGML方式出版の成立と普及</H1> SGML方式による出版の事例.....(中略).....後で解説する。<P> (中略) <H1>SGMLとSGML方式電子出版</H1> <H2>SGML方式電子出版</H2> 全体像を把握してもらうため、.....(中略).....説明した。<P> (中略) </HTML> 図5. "review"のHTML形式データ
1)DTDの作成
自分が扱う全文データベース用のDTDが既に存在する場合は、それを利用すれ ばよいので、作る必要はない。そうでない場合は、既存のDTDを改良するか、あ るいは自作すればよい。作ったDTDがSGMLの文法に合っているかはSGMLパーサ(parser) でチェックする。
パーサとしては、たとえば、SEMA GroupのMark-It, ExotericaのOmniMark, 富 士通のSGML/Baseなどがある。また、public domain のソフトとしては、sgmls がある。
2)文書テキストの作成
DTDに従った文書テキストを作る方法は、A)SGMLエディタを使う、B)既存のワ ープロ・ソフトを使うの二つに大別される。SGMLエディタを使えば、プロンプト に従って該当データを入力することによって容易に文書テキストを作ることがで きる。BにはB1)特定の記号をDTDで設定して入力し、SGMLパーサを通して変換す る、B2)ワープロ・ソフトのスタイル・シートの機能を使う、B3)同じくマクロ機 能を使う、B4)変換ソフトを使うなどの方法がある。このようにすれば、Bでも開 始タグや終了タグの入力無しで文書テキストを作ることができる。日本化学会で は94年4月からMS Word, WordPerfect, PageMakerで使用できるスタイルシートを 使った電子投稿の実験も行っている。なお、B2, B3などの場合はSGMLパーサを通 してチェックした方がよい。
SGMLエディタとしては、たとえば、SoftQuadのAuthor/Editor, 松下電送のSGML-Plus などがある。また、ワープロ形式からSGML形式への変換ソフトも最近いろいろ出 てきている。
3)文書テキストの印刷
SGML文書用のフォーマッタを使うか、SGML形式から変換してLaTeXで印刷する か、または印刷ソフトでSGML対応機能を持ったものを使えばよい。たとえば、LaTeX 出力が可能なものとしては、Mark-It, SGML/Base, SGML-Plusなどがある。また 、SGML対応の印刷ソフトとしては、日本ユニテックのGRACE, InterleafのInterleaf5<SGML> などがある。
4)電子図書の作成
SGMLに対応しているものとしては、DynaText, WWW, Guideなどがある。それ以 外でもそのソフトへの変換プログラムを書けばよい。
さらに注目されることとして、アメリカのCALSの民生化がある。CALSはこれま でSGMLの普及を進める原動力となっていたが、CALSが国防省のプロジェクトであ ったため、SGMLは自分には関係ないと思う人も少なくなかった。しかし、93年CALS の本称がContinuous Acquisition and Life-cycle Supportに変更され、一般官 庁、民間企業間の取引にも適用しようとする動きが活発になってきた。そして、CALS はネットワーク環境NII(情報ハイウェイ)と結びつき、新たな展開を見せている 。
今後、SGMLの浸透は必然となろう。特に電子図書館ないしディジタル図書館で はSGMLは必要不可欠となっていくだろう。今後の進展に期待したい。
なお、本稿は頁数の関係もあり、触れずに終わった点も少なくない。そこで最 後に解説書を紹介しておこう。SGMLとは何かを手短に知るには文献[27]が良い。 また、各分野の専門家が「SGMLは如何に有効か」を書いた本[28]も参考になろう 。Herwijnen[11]はSGML方式を実行するにはどうしたらよいかを書いている。Bryan の本[9]はSGMLの機能に詳しい。SGMLの元祖Goldfarbの本[29]はSGMLの全貌を明 らかにしようとした本である。そして、本稿がSGMLの理解の一助になれば幸いで ある。
[2]JIS X 4151,文書記述言語SGML, 日本規格協会, 1992年7月, 231p.
[3]Martin Bryan. SGML: An Author's Guide to the Standard Generalized Markup Language. Addison-Wesley, 1988.
[4]Eric van Herwijnen. Practical SGML. Kluwer Academic Publishers, 1990.
[5]根岸正光, 私信.
[6]H.Ishizuka. The reception of SGML based electronic publishing by Japanese scientific community. Proc. 47th FID(Int. Fed. Inf. Doc.) Conf. Cong., pp.505-508 (Oct. 1994, Omiya).
[7]情報知識学会誌, Vol.1, No.1, 1990 年12月, 98pp.
[8]石塚英弘. SGML形式による学会誌全文データベースの構築と印刷. 情報知識 学会誌, Vol.2, No.1, pp.23-48(1991).
[9]Martin Bryan 著, 山崎俊一監訳, 福島誠訳. SGML入門. アスキー出版局, 1991 年3月, 378pp.
[10]根岸正光. 『SGML実験誌』の出版について. SGML実験誌 1991, p.i-iii(1991), 学術情報センター.
[11]Eric van Herwijnen著, SGML懇談会実用化WG監訳. 実践SGML. 日本規格協会, 1992 年4月, 305pp.
[12]斉藤雅. 学術論文CD-ROMシステム. 情報処理学会人文科学とコンピュータ研 究会資料, 15-1, pp.1-7(1992).
[13]伊藤卓. 日本化学会欧文誌の全文データベース化と電子出版化への移行につ いて. 化学と工業, 46巻1号, pp.92-95 (1993).
[14]石塚英弘, 伊藤卓, 榎敏明, 千原秀昭, 中西敦男, 田中洋一. 日本化学会欧 文誌のSGML形式全文データベースの構築・印刷そして検索. 情報処理学会情報学 基礎研究会資料, 29-1, pp.1-8 (1993.5).
[15]斉藤伸雄. オブジェクト指向による論文誌ビューアの開発. 日本印刷学会年 会 (1993.5).
[16]伊藤卓, SGMLを用いた学術論文誌の電子出版化−日本化学会欧文誌の場合−. 情報の化学と技術, Vol.43, No.12, pp.1089-1096(1993).
[17]上嶋邦義, 学術論文誌の全文データベース化と電子出版の実際. 医学図書館, Vol.41, No.1, pp.38-45(1994).
[18]石塚英弘, 伊藤卓, 千原秀昭, 根岸正光, 中西敦男, 田中洋一. 全文検索シ ステムのリーソースとしてのSGML方式データベース. 情報処理学会情報学基礎研 究会資料, 33-6, pp.29-34 (1994.5).
[19]安達淳「国際規格; 文書スタイル意味指定言語(DSSSL) の概要」情報処理, Vol.33, No.2, pp.176-184(1992).
[20]高橋亨「標準ページ記述言語(SPDL)とその動向」情報処理, Vol.33, No.6, pp.689-697(1992).
[21]小町祐史編著. 電子出版技術入門. オーム社, 1993年, 175pp.
[22]Donald E. Knuth. The TeXbook. Addison-Wesley, 1984. ( 斉藤信男監修, 鷲谷好輝訳. TeX ブック. アスキー出版局, 1989).
[23]Leslie Lamport. LaTeX: A Document Preparation System. Addison-Wesley, 1986, 242pp. (E. Cooke・倉沢良一監訳, 大野俊治・小暮博道・ 藤浦はる美訳. 文書処理システムLaTeX. アスキー出版局, 1990).
[24]石塚英弘, 伊藤卓, 竹内敬人, 千原秀昭, 中野英彦, 眞野倖一, 吉村忠与志, 中西敦男, 田中洋一. 電子投稿によるSGML方式全文データベースの作成ー日本化 学会の実験ー. 情報処理学会情報学基礎研究会資料, 35-1, pp.1-8 (1994.11).
[25]阪口哲男. Internetにおける情報資源の利用と提供の実際. ディジタル図書 館, No.1, pp.43-50 (1994.8).
[26]Jakob Nielsen. HYPERText & HYPERMedia. Academic Press, 1990.斉藤孝訳. HYPERText & HYPERMedia. HBJ出版局, 1991, 257pp.
[27]吉岡誠編著. SGMLのススメ. オーム社, 1993年11月, 167pp.
[28]根岸正光・石塚英弘編. マルチメディア選書, SGMLの活用. オーム社, 1994 年12月刊行予定.
[29]C.F.Goldfarb. The SGML Handbook. Oxford University Press, 1990, 633pp.