構造化文書とは

 

文書を、明示された文書構造のルールに基づきマークアップしたとき、構造化文書となります。つまり構造化文書について述べるにあたっては、文書の種類と構造、そしてマークアップに関して学ぶ必要があります。構造化文書を記述するための要件を満たす言語という面からXMLについて紹介します。

多くの出版された書籍は次のような大枠の構造を持ちます。

  • 表紙
  • 前書き
  • 目次
  • 本文
  • 後書き
  • 奥付

本文は、さらに大見出し、中見出し、小見出しといったものを必要に応じ繰り返します。本文の文章中には箇条書きや引用、表といったものが登場します。大きなまとまりの中に小さなまとまりが繰り返される、階層構造です。階層化された見出しにより、文章の持つ意味や重要度を差別化でき、読み手に意味の重要度が伝わりやすくなります。階層構造の利点についての詳細は、 [1]をご覽ください。

また、章や節・図表に番号を振ったり、注釈や参考文献を記したりします。これは参照先や参照元といった、参照構造を持つといえます。

出版された書籍は一般に著者の原稿に手を加えられたものです。主に編集者によって、より読みやすく、文意が明らかになるように編集され、上に挙げたような構造が明確化されます。

編集者がおらずとも、構造について考えつつ文書を書くことは一般的に行われています。たとえば、論文は学会ごとに、規定された執筆要綱に沿って構成することが求められます。ビジネス・レターや見積書にも適切な様式とされるものが存在します。

構成や様式も文書の構造の一種です。文書の構造は、読み手が構造に沿って、自分に必要な情報へアクセスする助けになります。論文であれば、序論を読めば概要を把握して内容を細かく読み込むべきか判断したり、参考文献のリストを読めば何に依拠した論を述べているかを知ることができます。見積書であれば、それぞれの数量や金額が項目ごとに並んだ表から内訳が把握できます。

HTMLやXMLなどのマークアップ言語における「マークアップ」は、著者の原稿に編集者が再入力の指示や組版作業者への指示を書き込む「エディトリアル・マークアップ」に着想を得たものです。「エディトリアル・マークアップ」においては、書き込まれる指示は著者、編集者、デザイナー、組版作業者といった一緒に仕事を行う関係内で合意があれば、どのような記号や方法であっても問題にはなりませんでした[2]

SGML

『SGML入門[3]』によれば、コンピュータ上で文書を作成するため、ワードプロセッサがさまざまに作られました。これらのワードプロセッサは、それぞれに独立した記法やファイルフォーマットを持っていました。この、ユーザとワードプロセッサ、印刷システムの間で合意した特殊なマークアップは、異なるワードプロセッサや印刷システムでは使えません。ユーザは必要に応じて特殊なマークアップを使い分ける必要がありました。

この状況を変えるため、プリント命令などワードプロセッサ固有のマークアップと、強調を指示するなど汎用的なマークアップを分離する言語仕様が提唱されました。この汎用的なマークアップがやがて、Standard Generalized Markup Language(SGML)へと発展します。

SGMLでは、文書に用いる構文や文字記号と、文書の構造をあらかじめスキーマによって記述できます。とくに他のシステムとやりとりをする場合には必須となります。規定された文字集合(タグ)を使い、記述された構造を文書本体にマークアップによって明示します。スキーマとして文書の構造が記述されていることによって、構造の検証を記述を元に行うことができるのです。整理すると、SGML文書は次の3つによって構成されています。

  • 文書内で使用する構文と文字集合を定義するSGML宣言。
  • 文書の構造を定義する宣言。Document Type Definition(DTD)と呼びます。
  • 上2つに沿った文書のテキスト。

マークアップ言語は、エディトリアル・マークアップが、マークアップ言語を使うすべてのユーザに言語仕様として合意されたものと考えることができるでしょう。

XML

SGMLは、さらに今日のXML、HTMLへと発展します。

Extensible Markup Language(XML)[4]は、文書の構造をSGMLよりもシンプルに、統一的に記述できるマークアップ言語です。 SGMLの膨大な仕様のうち、どの仕様を使うかをあらかじめ決めておくことでこれを実現しています。一方のHTMLは、文書の構造自体をあらかじめ決めてあるSGMLとして誕生しました。

XMLでは開始タグと終了タグ、そして単独で閉じたタグを用いて文書をマークアップします。タグは入れ子で記述できますが、 <a><b></b></a> のように、開始タグと終了タグの順序は対応していなければなりません。こういったXMLの決まりを守っているXML文書を「整形式文書」と呼びます。

XMLでの文書の構造はDTDによって規定できるように作られましたが、このことには3つ問題がありました。まず、XMLにおいてDTDによって記述できるスキーマ自体に曖昧な箇所があったこと。次に、XMLでは終了タグが省略できないなど、SGMLのDTDに修正が必要な場合があること。最後は、DTDの書き方はSGMLのもので、XMLのものではないことです。

これらを解決するためにXML Schema[5]というXMLで記述できるスキーマ言語が開発されました。また、この仕様が複雑すぎるとしてRELAX NG[6]が開発されました。この2つは XMLの仕様に沿って記述ができます。

SGMLと同様、文書構造の記述または宣言は、文書を交換する際には必須となります。また、文書構造を持ち、その構造にしたがっている整形式文書を「妥当な文書」と呼びます。

文書構造の宣言

すでに述べたように、文書構造の記述というものが登場しました。文書構造の記述は自分でも行うことができますが、外部の記述を使用することを宣言することもできます。

標準化、つまり公に合意されたものを使うことで、よりマークアップの意味を正しく伝えられるでしょう。標準化された文書構造の代表的な例としては、DocBook[7]、DITA[8]、JATS[9]やHTML[10]があります。これらは皆、目的または応用領域をはっきりとさせていて、その目的に応じて構造がどうあるべきかを詳細に分析された上で定められています。

マークアップが「宣言された文書構造の宣言にしたがって構造を明示する」作業とするなら、構造化文書としてマークアップを行うには、文書の内容がすでに文書の構造にしたがって記述されている必要がある、ということです。文書が読まれることを前提とする以上、すでに合意されている文書の構造を用いることが望ましいでしょう。また、目的に沿う文書の構造がなければ改めて自身で宣言できることが期待されます。そして、構造がスキーマとして記述されていることで、マークアップした文書が構造に沿っているかの検証ができます。

構造化文書というものがXMLと等号で結べるものではないにしても、XMLを例に挙げて述べられるのはこういった事情によるものでしょう。「妥当な文書」は、構造化文書のマークアップとして上の要件に適合できるからです。

「Microsoft Wordで構造化文書は書けるのか」といった問いが投げかけられることもありますが、重要になるのは「構造をあらかじめ意識して、その構造にしたがって記述できるのか」という点になるのではないでしょうか。

参考資料

  1. 階層構造 - 日本電子出版協会 いまさら聞けない電子出版のABC ebookpedia
  2. マークアップ - 日本電子出版協会 いまさら聞けない電子出版のABC ebookpedia
  3. 『SGML入門』(Martin Bryan 著, 山崎 俊一 監訳, 福島 誠 訳, アスキー出版局, ISBN4-7561-0069-4)
  4. Extensible Markup Language - W3C
  5. XML Schema - W3C
  6. RELAX NG HomePage
  7. OASIS DocBook TC
  8. OASIS Darwin Information Typing Architecture (DITA) TC
  9. Journal Article Tag Suite
  10. HTML - WHATWG