現代のウェブサイトを支えるHTMLや、多様なデータ交換形式として利用されるXML。これらの基盤となったのがSGML(Standard Generalized Markup Language:標準汎用マークアップ言語)です。ISO 8879として標準化されたこの言語は、単なる記述形式ではなく、「マークアップ言語そのものを定義するための言語」というメタ的な役割を担っています。
もともと政府機関や航空宇宙産業など、数十年単位で文書の可読性を維持する必要がある大規模プロジェクト向けに設計されました。その厳格な構造定義と柔軟な拡張性は、その後のデジタル文書のあり方を決定づけました。
Key Facts
- 標準規格: ISO 8879として定義されており、1986年に最初のバージョンが策定された。
- 役割: 特定の文書形式ではなく、独自のマークアップ言語を設計するための「メタ言語」である。
- 系譜: IBMのGML(Generalized Markup Language)から発展し、後にXMLやHTMLに影響を与えた。
- 特徴: DTD(文書型定義)による厳格な妥当性検証と、タグの省略などの柔軟な構文オプションを持つ。
- 現状: 現代ではその簡略版であるXMLが主流となり、新規プロジェクトでフルスペックのSGMLが使われることは稀である。
SGMLの歴史と発展
SGMLのルーツは1960年代にIBMのチャールズ・ゴールドファーブ、エドワード・モシャー、レイモンド・ロリーによって開発されたGMLにあります。GMLの設計思想は、機械が読み取り可能な形式で大規模な文書を共有し、長期的に保存することにありました。
その後、国際標準としてISO 8879が策定され、1986年に正式に認められました。時代に合わせて、任意の言語や文字セットをサポートする「SGML (ENR)」や、WWWの要件を取り入れた「SGML (ENR+WWW / WebSGML)」へと進化を遂げました。
この規格は、文書処理言語であるDSSSLや、ハイパーテキストを定義するHyTimeと共に、電子文書を支えるISO標準の三本柱として機能していました。

構文の仕組みと柔軟な機能
SGML文書は、大きく分けて「SGML宣言」「プロローグ(DTDを含む)」「文書本体」の3つの構成要素から成り立っています。特にDTD(Document Type Definition:文書型定義)は重要で、どのような要素(タグ)が使用可能で、どのような構造で配置されるべきかを定義します。
抽象構文と具体構文
SGMLの最大の特徴は、抽象的な構文を定義し、それを具体的な文字(デリミタ)で実装できる点にあります。一般的には< >(アングルブラケット)が使われますが、宣言次第で異なる記号をタグとして利用することが可能です。
マークアップの最小化(省略機能)
効率的な記述を実現するため、SGMLにはいくつかのオプション機能が備わっています。
- OMITTAG: DTDの定義に基づき、文脈から判断可能な場合に開始タグや終了タグを省略できる機能。
- SHORTREF: 特定の文字列(例:
==)をタグの代わりとして使用できる機能。これは現代のWiki記法に近い概念です。 - SHORTTAG: 英数字のみの属性値において、引用符(" ")を省略できる機能。
文書の妥当性と検証
SGMLでは、文書が正しく記述されているかを判断する「妥当性(Validity)」を重視します。主に以下の2つの形式が定義されています。
- 型妥当(Type-valid): 関連付けられたDTDに従って正しく構造化されている文書。
- タグ妥当(Tag-valid): DTDがなくても、すべてのタグが適切に閉じられているなど、構文的に完全な文書。
この厳格な検証メカニズムにより、産業用や軍事用などの極めて高い信頼性が求められる文書管理が可能となりました。
SGMLから派生した主要言語
SGMLは複雑で実装コストが高かったため、よりシンプルで扱いやすい「プロファイル(サブセット)」としてXMLやHTMLが発展しました。
XML(Extensible Markup Language)
XMLは、Webでの利用を想定してSGMLを大幅に簡略化したものです。タグの省略を禁止し、構文を厳格にすることで、パーサー(解析プログラム)の実装を容易にしました。現在、データ交換の標準として広く普及しています。
HTML(Hypertext Markup Language)
HTMLは当初からSGMLの応用として設計されました。HTML 4まではISO 8879に準拠していましたが、HTML5に至ってはSGMLとしての定義を捨て、独自の解析ルールを導入しています。これは、現実のWebブラウザの挙動に合わせた実用的な判断によるものです。
| 項目 | SGML | XML | HTML (Classic) |
|---|---|---|---|
| 標準規格 | ISO 8879 | W3C勧告 | W3C / WHATWG |
| タグの省略 | 可能(オプション) | 不可 | 一部可能 |
| DTDの必要性 | 基本的に必要 | 任意(検証に利用) | 定義済み |
| 主な用途 | 大規模産業文書 | データ交換・設定ファイル | Webページ表示 |
Frequently Asked Questions
SGMLとXMLの決定的な違いは何ですか?
最大の違いは「簡略化の度合い」です。SGMLは非常に多機能でタグの省略などが可能ですが、その分解析が複雑です。XMLはSGMLのサブセットであり、タグの省略を禁止するなどルールを厳格にすることで、軽量で高速な解析を可能にしました。
なぜ現代ではSGMLを直接使わないのですか?
フルスペックのSGMLパーサーを実装するには非常に高いコストと複雑さが伴うためです。現代のコンピューティング環境では、XMLのようなシンプルで標準化された形式の方が効率的に動作し、開発者の負担も少ないため、XMLやJSONに移行しました。
HTML5はまだSGMLの一部なのですか?
いいえ、HTML5はSGMLとしての定義を放棄しました。以前のバージョンはSGMLアプリケーションとして定義されていましたが、HTML5では実際のブラウザの実装に合わせた独自の解析ルールを定義しており、SGMLの規格とは切り離されています。
DTDとは具体的にどのような役割を持つものですか?
DTD(文書型定義)は、その文書で使える「タグの辞書」のようなものです。「どのタグが使えるか」「タグの中にどのタグを入れて良いか」「どの属性が必須か」といったルールを定義し、文書がそのルールに従っているかを検証するために使用されます。
References
- ISO (5 March 2008). "JTC 1/SC 34 – Document description and processing languages". ISO. Retrieved 2009-12-25.
- ISO JTC1/SC34. "JTC 1/SC 34 – Document Description and Processing Languages". Retrieved 2009-12-25.
{{}}: CS1 maint: numeric names: authors list () - ISO/IEC 10744 – Hytime
- "ISO/IEC TR 9573" (PDF). . 1991. Retrieved 5 December 2017.
- (1996). "The Roots of SGML – A Personal Recollection". Archived from the original on December 20, 2012. Retrieved July 7, 2007.
- (1990). The SGML Handbook. Clarendon Press. .
- "Terms and Definitions of ISO 8879 draft".
- Wohler, Wayne (July 21, 1998). "SGML Declarations". Archived from the original on May 28, 2009. Retrieved August 17, 2009.
- Egmond (December 1989). "The Implementation of the Amsterdam SGML Parser" (PDF).
- Carroll, Jeremy J. (November 26, 2001). "CoParsing of RDF & XML" (PDF). . Retrieved October 9, 2009.