表紙へ             次の記事    
全文データベースのための技術:SGML

全文データベースのための技術:SGML

(その2) 本学教授 石塚英弘
〔本稿は連載となったため、前回(その1)の内容を目次形式で示しておきたい。
  1. はじめに
  2. SGMLの効用と適用事例
  3. SGMLの基本概念
    1. 標準汎用マーク付け言語
    2. 文書構造の表現

           そして、今回の内容は以下のとおりである。

    3. ISOの電子出版モデル
  4. SGMLの機能
    1. DTD
    2. 文書テキスト
    3. 参照構造の表現
    4. WWWのMosaicのHTMLとの違い
  5. SGML関連の仕事とツール
  6. おわりに
適宜ご参照いただければ幸いである。なお、今回(その2)で本稿は完了する。〕

注:本稿は図書館報Vol.10のNo.3とNo.4の2回に分けて掲載されたものの No.4掲載分である。なお、このテキストの作成に当たり、両者をリンクで つなぐ、他の関連文書とリンクでつなぐ等の修正を加えている。


3.3.ISOの電子出版モデル

ISOの電子出版モデルは、1)SGMLによるマーク付け、2)DSSSLによる割付指定、 3)SPDLによるページ記述の三つで構成される。ISOの電子出版モデルでは、そ れまで一体化されていた印刷に関わること(DSSSLとSPDL)を分離し、文書構造 表現を中核とした点が特徴である。そして、マーク付けの操作により、文書は 単なるテキスト・ファイルではなく、文書DBとなる。こうして作成されたDBは、 単に印刷の元となるだけでなく、CD-ROMの元にも成るし、交換流通にも使うこ とができる。 一方、従来のCTS(computerized typesetting, 電算写植)による出版は、原 稿に印刷用の制御記号(コマンド)を手作業で挿入しており、いわば印刷のため の作業であった。また、CTSではファイルは作られるが、データ項目が区別さ れているわけではなく、DBとは言えない。 ところで、SGMLに基づいた全文DBをそのまま表示してはタグが混入していて 見難いので、成形して印刷するソフトが必要である。たとえば、DSSSLとSPDL の機能を持つ「フォーマッタ」というソフトがあればよい。もっとも、フォー マッタがなくとも、SGMLに対応した印刷ソフトがあるか、または、SGML全文DB からその印刷ソフトの形式に変換できればよい。TeXあるいはLaTeXは、DSSSL とSPDLの機能を併せ持っているので、DSSSLやSPDLの代わりに用いられること が多い。その際は、SGMLの文書DBからTeXやLaTeXのコマンドを埋め込んだファ イルを自動生成する。これをTeXやLaTeXの処理系に掛ければ、版下が出てくる わけである。特に、LaTeXは文書構造を意識しているので、自動生成は容易で ある。

4.SGMLの機能

ここで、仮に「全文データベースのための技術:SGML」という単行本があると してDTDと文書テキストを説明する。その本(名前をsgbookとする)は、front matter(前付, fmと略), body(本文, bdy), back matter(後付, bm)という3つ の要素(element)で構成されるとする。また、fmは3つの要素:title, author, table of content(目次, toc)で構成される。bdy は章(chp)で、章は節(sec) または段落(p)で、節は段落で構成される。等々の階層構造を持つとする。

4.1.DTD

sgbookの構造をSGMLでDTDとして書けば、図1となる。各行はELEMENT文で、 個々の要素がどの要素から構成されるかを定義している。なお、先程の説明で は章のタイトル(chpti)は省略したが、DTDでは要素に加えてある。また、bmの ELEMENT文は省略した。

    <!ELEMENT sgbook - - (fm, bdy, bm?)>
    <!ELEMENT fm - O (ti, aut, toc)>
    <!ELEMENT bdy - O (chp+)>
    <!ELEMENT chp - O (chpti,(sec+|p+)>
    <!ELEMENT sec - O (secti, p+)>
    <!ELEMENT p - O (#PCDATA)+>

  図1. "sgbook"の階層構造を表現したDTD

SGMLの文法では、大文字小文字は同じものとして扱われる。ここでは要素の 名前が目立つように小文字にしてみた。ここで使われている要素名は省略した 名前で分かりにくいと思う読者も少なくないだろう。要素名はDTDのELEMENT文 で定義するのであるから、分かりやすい名前を定義してもよい。通常は名前の 長さは8文字以下と定められているが、DTDで長さを変えることも可能である。 ELEMENT文の形式は、<!、ELEMENT、要素名、開始・終了タグ省略の有無、開 始タグから終了タグの間に出現できる構成要素、> である。図1の1行目の記述 は、sgbookという要素はfm, bdy, bmという3つの要素で構成され、また、この 順で出現することを示している。fm, bdyについても同様である。なお、 #PCDATAとは解析対象文字データという意味で、予約語である。データ中に実 体参照や開始タグなどのマークを含んでいるかどうかをSGMLパーサが解析する 必要があることを示す。#は予約語を示す記号である。SGMLパーサは後に説明 する。 DTDは構造を厳密に記述できる。例えば、存在しなくともよいもの (optional,出現頻度0または1)は"?"で示す。bmはoptionalである。また、章や 段落などは一回以上繰り返し出現する(1からN回)が、これは"+"で示す。なお、 無いこともあり、繰り返すこともある場合(0-N回)は"*"で示す。また、構成要 素によっては順に現れるのではなく、どちらかが現れる場合もある。これは |(OR記号, 縦棒)で表現する。このほか &(AND記号)もあるが、これは&の両側 の要素が必ず現れること、ただし順序はどちらでもよいことを示す。 開始・終了タグ省略の有無についても説明しておく。2行目は"- -" 、3行目 は"- O" となっている。左は開始タグ、右は終了タグを示し、"-"は省略でき ないことを、"O"はomitted を示す。たとえば、要素sgbookは開始・終了タグ ともに省略できないことを、fmは終了タグは省略できることを示す。なお、開 始タグ、終了タグは文書テキストの所で説明する。

4.2.文書テキスト

sgbookの文書テキストを図2に示す。ここで、<sgbook>, <ti>, <aut>など、 <要素名>の形式になっているものは、それぞれ、要素名が、sgbook, ti, aut の要素の始点を示すマークであり、これを開始タグという。また、要素の終点 は</sgbook>のように、</要素名>で示す。これを終了タグという。この例で <ti>や<aut>の終了タグ</ti>や</aut>が無いのは、この文書テキスト用のDTD で、これらの省略が許されているからである。なぜ、許されるかと言えば、ti の次はaut, autの次はtoc(目次)と定義されており、そのため<aut>が来ればti の終了が、<toc>が来ればautの終了が判定可能だからである。一方、 </sgbook>の方は全体の終わりを示しており、これがないとsgbookの終わりが 判定できない。そのため、省略できないのである。
    <sgbook>
    <fm>
    <ti>全文データベースのための技術:SGML
    <aut>石塚英弘
    <toc>1.はじめに
    2.SGMLの効用と適用事例
       (中略) 
    <bdy><chp><chpti>はじめに
    <p>全文データベースの作成・保守......
    ...(中略).....ことにしたい。
   <chp><chpti>SGMLの効用と適用事例
    <p>SGMLは全文データベース.....(中略).
        ....だろう。
    <p>SGMLの基本概念の.........(中略)...
    ....にもなっている。
       (中略) 
   </sgbook> 

        図2. "sgbook"の文書テキスト
このようなマーク付き原稿を作るのは面倒と思われるであろう。実際には、 <要素名>, </要素名>無しにテキストを入力する方法があるから安心してほし い。たとえば、「SGML対応エディタ」の使用、自分で違和感のない記号をDTD で定義し、その記号を正規の開始・終了タグにソフトで変換する方法などがあ るし、最近ではワープロ原稿からの自動変換もある。

4.3.参照構造の表現

ここでは、被参照データと参照指示データとをIDを使ってリンクする方法を 説明する。IDの操作はSGMLの属性機能を使って行う。note(注)を例として説明 する。 DTDでは被参照データについて、
   <!ELEMENT  note  - -  (p)>
    <!ATTLIST  note  id  ID  #IMPLIED>
と定義する。ここで、ATTLIST 文は属性リストを宣言する文で、その形式は、 <!、ATTLIST、要素名、属性名、属性の宣言値、属性の省略時値、> である。 noteの場合は、要素noteがidという属性名を持ち、それはID(識別子値)である ことを示す。 参照指示データは、noteのreferという意味で要素名をntref にすれば、
   <!ELEMENT  ntref  - O  EMPTY> 
    <!ATTLIST  ntref refid IDREF #IMPLIED>
と定義できる。ここで、EMPTYとは構成要素が無いことを示し、IDREF(識別子 参照値)は被参照データの識別子を参照することを示す。 そして、被参照データの記述は、たとえば、
    <note id=note1>開発者3人の頭文字を
    並べたものでもある。</note> 
となり、本文の方の記述は
   ....汎用マーク付け言語GML<ntref refid=note1> はマニュアルや仕様書....
となる。この方式ならば、
    ....GML<ntref id=note1>以外でもシステムの命名の仕方には....
のように、本文の別の所で同じ注を参照することができる。

4.4.WWWのMosaicのHTMLとの違い

SGML文書テキストの書き方は、Mosaicのデータ入力形式: HTML(Hyper Text Markup Language) とよく似ている。それは、HTMLがMosaic用のDTDに従った入力形式だからであ る。ただし、Mosaic用のDTDでは、著者、章、節などの要素がない。また、利 用者にはDTDが公開されておらず、改定もできない。HTMLは文書の構造記述よ りもハイパーテキスト機能の提供の方に主眼を置いたのであろう。 HTMLでは、前述した属性機能を使ってハイパーテキストのリンクを表現する。 この機能を使えば、章、節などの階層構造も表現可能である。たとえば、目次 に書かれた、章や節のタイトルから個々の章や節の開始点へのリンクを付ける ことができる。 SGML方式全文DBとHTML形式とを比較すれば、前者の方が構成要素間の関係を 明示していると言える。たとえば、後者ではリンクとして記述されていても、 章や節の関係としては明示されていない。そのため、SGML方式全文DBからHTML 形式への自動変換は可能であるが、その逆は難しい。

5.SGML関連の仕事とツール

ここでは、SGML方式の全文DBを作って利用する時に、何の仕事があるか、ま た、それはどのSGML関連ツールを使って行うかを説明する。

1)DTDの作成
自分が扱う全文データベース用のDTDが既に存在する場合は、それを利用す ればよいので、作る必要はない。そうでない場合は、既存のDTDを改良するか、 あるいは自作すればよい。作ったDTDがSGMLの文法に合っているかはSGMLパー サ(parser)でチェックする。
2)文書テキストの作成
DTDに従った文書テキストを作る方法は、A)SGMLエディタを使う、B)既存の ワープロ・ソフトを使うの二つに大別される。SGMLエディタを使えば、プロン プトに従って該当データを入力することによって容易に文書テキストを作るこ とができる。BにはB1)特定の記号をDTDで設定して入力し、SGMLパーサを通し て変換する、B2)ワープロ・ソフトのスタイル・シートの機能を使う、B3)同じ くマクロ機能を使う、B4)変換ソフトを使うなどの方法がある。このようにす れば、Bでも開始タグや終了タグの入力無しで文書テキストを作ることができ る。なお、B2, B3などの場合はSGMLパーサを通してチェックした方がよい。 なお、ワープロ形式からSGML形式への変換ソフトも最近いろいろ出てきている。
3)文書テキストの印刷
SGML文書用のフォーマッタを使うか、SGML形式から変換してLaTeXで印刷す るか、または印刷ソフトでSGML対応機能を持ったものを使えばよい。
4)電子図書の作成
SGMLに対応している電子図書システムとして、DynaText, Interleaf, WWWの Mosaic, Guideなどがある。これらは、SGML方式全文DBからそのソフトの内部 形式への変換ツールを用意している。 それ以外のソフトでも変換プログラムを書けばよい。たとえば、Microsoft のMultimedia ViewerはRTF (Rich Text Format)という変換フォーマットを持っ ているので、RTFへの変換プログラムを書いてやればよい。 たとえば、日本化学会の欧文誌はSGML方式の全文DBとなっているが、そのDB から、Multi-media Viewerを使ったCD-ROM版と、 Mosaic版とが試作された。この 2つとも変換プログラムを書いて実現されている。これらは日本化学会が凸版 印刷(株)の協力を得て行った。著者もこのプロジェクトに参画しているが、本 学卒業生の高柳由美子さんも凸版印刷社員として参加したことを紹介しておこ う。

6.おわりに

SGMLによる全文DBは欧米では広く使われているが、日本でも漸くその傾向が 出てきた。これは、SGML関連のツールがいろいろと出てきたこと、紹介の文献 や本が出版されるようになったことなどによると思われる。近いうちに日本の 状況も欧米並になろう。また、SGMLに動画や音声を取り入れた HyTimeもISOそしてJISの規格に なった。今後の発展が大いに期待される。 本稿の最後に入門的な文献を挙げておいた。興味のある方は参照されたい。 なお、本稿では例を挙げるなどして読者の理解を助けようとしたため、これ までになく長いものとなってしまった。その結果、各方面にご迷惑をお掛けし たことと思う。その失礼をお詫びするとともに、連載として全文を掲載して下 さった本誌編集委員会に心から御礼申し上げます。

1)吉岡誠編著. SGMLのススメ. オーム社, 1993年11月, 167pp.
2)Eric van Herwijnen著, SGML懇談会実用化WG監訳, 実践SGML. 日本規格協会, 1992年4月, 305pp.
3)Martin Bryan著, 山崎俊一監訳, 福島誠訳. SGML入門. アスキー出版局, 1991年3月, 378pp.
4)石塚英弘. SGMLと全文データベース. 情報管理, Vol.37, No.2, pp.148-159(1994). 
5)根岸正光・石塚英弘編. SGMLの活用. オーム社, 1994年12月刊行予定.

Author: ishizuka@slis.tsukuba.ac.jp, compiled: itaru@slis.tsukuba.ac.jp