JISX4151

SGML

[39] SGML は、マーク付け言語の共通の構文 (あるいはメタ構文) を規定したものでした。 HTMLXML をはじめ多くのマーク付け言語SGML から派生しました。また一般化マーク付け (表現と構造の分離) や DTD (スキーマ) などの思想はその後のマーク付け言語の設計にも大きな影響を与えました。

仕様書

本体仕様

[43] SGML 本体は、 ISO 8879(:1986) で規定されていました (素のSGML)。

[62] 1996年には Cor.1 で ENR 拡張が追加されています。

[63] 1999年には Cor.2 で Web SGML が追加されています。

[64] Cor.1 と Cor.2 は SGML の改訂版ではあるのですが、以前の版を廃止・変更する形ではなく、 併存する3つのモードという形になっています。

[11] >>10 は、 1990年1月19日時点での ISO 8879 を改訂するとしたらの変更予定でした。 定義の明確化などの比較的軽微の変更に加えて、 ASN.1 によるバイナリー表現の追加などの新機能も盛り込まれていました。 しかしここでの変更はその後の拡張には反映されていません。

[41] The Sgml Handbook は、 SGML中の人による詳細な解説書です。 ISO 8879 (と N1035) をベースに解説 (注釈) を加えています。

拡張仕様

[65] 文書体系特性集合公式システム識別子といった SGML への追加機能が ISO/IEC 10744 (HyTime) の附属書として規定されています。

[47] DSSSL/HyTimeENR (TC1) と WebSGML (TC2) でつぎはぎ規格と化した ISO 8879, 全文改訂したらどうよ? と素人目には映るんですが、規格の規定はできるだけいじりたくないという ISO 的事情があるようです。

[42] SGML Catalog, 9601:1996 といった周辺仕様もありました。

翻訳規格

[44] 日本では、翻訳されて JIS X 4151 となっていました。

[46] 台湾では、翻訳されて CNS 13854 となっていました。

[48]

JIS名前対応国際規格
JIS X 4151‐1992文書記述言語 SGMLISO 8879‐1986 + 同 Amendment 1
JIS X 4151:1998文書記述言語 SGML (追補 1)ISO 8879:1986/Cor.1:1996
JIS X 4151:2001文書記述言語 SGML (追補 2)ISO 8879:1986/Cor.2:1999

[49] 初版 (1992) 以来 JIS は2回の改訂で第3版 (2001) になってるけど、規格票は 1992 + 2追補という形になっている。

[45] ISO 8879 と JIS X 4151‐1992 は章立てが異なっています。

JIS翻訳規格化する際に一生懸命 JIS の体裁になるように頑張っていたわけです。 (当時は今とは違って、直接原国際規格を参照したりする機会はそんなになかったのでして。それ以前に規格なんて読む人自体ごく少数だったのですし。)

だけど今となっては負の遺産と申しましょうか。 章だけじゃなくて、語定義の番号も (語定義が五十音順になってるので) 一致してません。90年代後半に出た追補の方は出来るだけ原規格の体裁を残すという方針のために、原規格の本体の体裁を参照しているものだから、 一つの規格の中で首尾一貫していないという最悪の状況。

ISO 8879JIS X 4151CNS 13854
Clause 0Introduction参考1 SGML の背景
Clause 1Scope1. 適用範囲1. 適用範囲
Clause 2Field of Application2. 適用分野
Clause 3References1. 備考 2. (引用規格)引用標準・相對國際標準
Clause 4Definitions3. 用語の定義2. 用語釋義
Clause 5Notation4. 表記法3. 記法
Clause 6Entity Structure5. 実体構造5. 実體結構
Clause 7Element Structure6. 要素構造6. 元素結構
Clause 8Processing Instruction7. 処理指令7. 處理指令
Clause 9Common Constructs8. 共通の構成要素8. 共同構造
Clause 10Markup Declarations: General9. マーク宣言—一般9. 標示宣告 : 通用
Clause 11Markup Declarations: Document Type Definition10. マーク宣言—文書型定義10. 標示宣告 : 文件型式定義
Clause 12Markup Declarations: Link Process Definition11. マーク宣言—連結処理定義11. 標示宣告 : 鍵結處理定義
Clause 13SGML Declaration12. SGML 宣言12. SGML 宣告
Clause 14Reference and Core Concrete Syntaxes13. 規格参照具象構文・核具象構文13. 参考與核心具體語法
Clause 15Conformance14. 適合4. 符合
参考2 一般化マーク付けの導入附録 1 通用標示的介紹
参考3 基本的概念附録 2 基本概念
参考4 付加機構附録 3 其它觀念
Annex DPublic Text参考5 公開文附録 4 公用文字
Annex EApplication Examples参考6 応用例附録 5 應用範例
Annex FImplementation Considerations参考7 実現についての考察附録 6 實作上的考慮
Annex GConformance Classification and Certification参考8 適合性の類別及び検査附録 7 符合分類與驗證
Annex HTheoretical Basis for the SGML Content Model参考9 SGML 内容モデルの理論的基礎附録 8 SGML 内容模型的理論基礎
Annex INonconforming Variations参考10 規格外の変形附録 9 非符合的變動
参考11 SGML 構文式一覧附録 10 SGML 生成規則
Annex J附属書 J (規定) 拡張命名規則
Annex KWeb SGML Adoptation附属書 K (規定) Web SGML 適応
Annex L附属書 L (参考) XML に関する追加要件
JIS 解説
JIS 追補1 解説
JIS 追補2 解説
英中名詞對照
生成規則的符記

[50] (原文にもあるでしょうが) 参考の章は SGML の解説書みたいになってて、そこから読み始めるのがいいかもしれません。 (規格本文は厳密な定義のためにわけわかめになってるから、そこから読み始めるのは理解不能になるかもしれない諸刃の県。)

[52] >>51 この HTML 版より、 JISC から PDF 版を入手した方がいいですね。そっちは追補も載ってるんだし。

[53] 2003-04-30 12:21 名無しさん: JISC から入手できる PDF, 以前は1つだけだったのにいつの間にか2つになってます。1つ目の文書は WebSGML だけで、2つ目は全部。2つ目と以前入手できた唯一の文書は内容的には同じようですが、バイナリ的には異なっています。 JISC も謎なことしますね・・・

[54] 規格票、随分誤植多くない?

[55] >>54 必ずしも誤植とはいえないけど、でもってこの規格に限らないけど、 " が丁寧にも (といっても印刷屋には当然なんだろうが) に不必要に (LIT なのに) 直されていたり。 (そのくせそうでないところもあるから、やっぱり誤植だ。)

[56] 1992規格は原国際規格と章の順序が変わっていたり、用語も頑張って訳したりして日本語の規格として完成させようとしてるけど、追補は原国際規格に忠実を目指していて、用語もカタカナ率が高い気がする。規格一般の傾向の変化を反映しているみたいで面白い。

[57] >>56 当時はともかく、今では国際規格と章が対応していないと不便だもんねぇ。

[58] TC2 で急にカタカナが一杯になってわけがわからんくなったわい...

[59] >>58 解説は時代の変化云々とか称して訳を変更したとかいうけど、引数パラメタとか絶対改悪だよね。あたしゃつい最近まで、パラメタ実体参照はなにがどうパラメーターなんだい? と疑問だったけど、 SGML 本体規格で引数実体参照と呼ばれていて、しかも実際マーク宣言の引数になっているのを見て長年の疑問が氷解したね。

[60] >>59 それとかマーク宣言 (markup declaration) がマーク付け宣言に変わったり。確かに訳語の整合性 (マーク付け = markup) という意味では悪くはないんだけど、わざわざ冗長にする必要はあったのかどうか。使い慣れたマーク宣言, マーク区間という呼び名の方が良くありません?

[61] CNS 13854‐86 (1992) は、 ISO 8879 に対応する CNS の規格です。 (ISO 8879-1986 に対応すると書いてありますが、 1988 年の Amendement が反映されているように見えます。)

SGML の機能

[66] SGML の機能

SGML 応用

[31] SGML応用

[27] XML との関係もSGML応用を参照。

実装

[22]

SGML の構文の部分集合

[15] SGML 文書のマークの表現は具象構文によってある程度制御できますが、 逆に言えばある程度以上の制御はできません。しかし、 場合によっては完全な SGML でない、構文の部分集合のようなものが使われることがあります。

SGML
基本となる SGML の構文です。
正準グローブ表現
正準グローブ表現に必要な範囲で、 単純な文字列としての比較が可能な書式です。
XML
使用できる機能と構文を制限した簡略版 SGML です。 XML 1.0XML 1.1 があります。他にも色々なバリエーションがあります (XML 参照)。

[24] Formal Grammar for the TEI-Interchange-Format Subset of SGML http://www.tei-c.org/P4X/GR.html#GRIS

SGML 記法

[16] SGML 記法は、 SGML文書から他の SGML文書参照する時に使う記法です。

注意: 普通 SGML文書実体内で他の SGML文実体参照する時は、 わざわざ記法を指定する必要はありません (というより指定してはいけません)。この記法はハイパーリンクなどの目的で外部非解析対象実体として SGML文書を扱う時に使います。

[17] 仕様書:

[18]

記法形式名
SGML
公式公開識別子
ISO 8879:1986//NOTATION Standard Generalized Markup Language//EN
属性
属性名属性値既定値説明
活性DTD又はLPD (active) 属性文書型名連結型名基底DTD活性にする文書型連結型
活性体系 (arch)体系(なし)活性にする体系
代替表現 (altreps) 属性形式(共通データ属性より)
取込み実体 (included) 属性形式(共通データ属性より)
記法派生源 (superdcn) 属性形式(共通データ属性より)

[19] 活性 DTD 又は LPD 属性: SGML 記法活性 DTD 又は LPD (active DTDs or LPDs) (active) データ属性は、 文書実体構文解析するに当たって使用する文書型及び/又は連結型の名前を指定します。

完全名
活性 DTD 又は LPD (active DTDs or LPDs)
参照具象構文名
active
所属記法形式
SGML
属性型
CDATA (制約: DTDLPD の名前をいくつか)
既定値
基底DTD

複数の値の指定の仕方は ISO/IEC 10744 に明記されていませんが、他の属性と同じく空白区切りでしょう。

活性文書型を複数指定すると、 文書は各文書型それぞれについて構文解析してグローブを別個に作成します。 活性連結型を複数指定すると、各 DTD に対して全ての LPD を適用します。 ISO/IEC 10744:1997 A.7.1 NOTE 534

[20] 活性体系属性: SGML 記法活性体系 (active architecture) (arch) データ属性は、 文書を処理する時に使用する体系の名前を指定します。

完全名
活性体系 (active architecture)
参照具象構文名
arch
所属記法形式
SGML
属性型
CDATA (制約: 体系の名前 (体系記法名))
既定値
体系処理なし

属性値には体系の名前を指定します。 派生元をたどると体系が幾重にも連なっている場合、 クライアント文書基底体系から順に体系記法名を指定していきます。 (と本文に書いてありますが、 DTD注釈name と単数形になっています。本当に複数指定していいのでしょうか。) ISO/IEC 10744:1997 A.7.1

体系を指定すると、参照されるのが文書自体ではなく、 文書から得た体系的実現値グローブになります。

MIME 型

[21] SGMLのMIME型

歴史

GML

ISO

Web SGML

[32] SGMLWeb における簡易版として XML が開発されました。 それと同時に XML を含む拡張機能を含めた SGML の改訂版である Web SGML が開発されました。

[33] XML は一時は Web 関連コミュニティーで大流行しましたし、 その後も Java など一部の世界では広く使われていますが、あくまでも SGML から派生した XML という特殊形が受け入れられたに過ぎず、元の SGML は普及しませんでした。

[34] XML に対応したツールの整備が進んだことから、 DocBook など既存の SGML応用XML へと移行してゆきました。

[12] English-Chinese Glossary of XML and SGML Terms http://xml.ascc.net/en/utf-8/gloss.html

[13] SGML とか XML とかでぐぐると (日本語)、胡散臭そうなのがいっぱい上位にごろごろ並んでるなあ。 (名無しさん 2004-12-14 12:00:22 +00:00)

[14] Designing document type definition (DTD) in SGML/XML http://www.saiensu.co.jp/ct_resource/199809/On-DTD.htm#S.para (名無しさん)

[25] The Roots of SGML -- A Personal Recollection http://www.sgmlsource.com/history/roots.htm (名無しさん)

[26] A Brief History of the Development of SGML http://www.sgmlsource.com/history/sgmlhist.htm

[28] SGMLやXML:メモランダム (2007-06-28 03:28:06 +09:00 版) http://mynotes.jp/blog/2007/06/sgml_and_xml (名無しさん 2007-06-29 13:25:35 +00:00)

[29] >>28 HTML 4 の仕様書はかなり例外的でしょう。

それにしても SGML の仕様書は難しく、 その難しさは SGML 自体の難しさに起因しているのではないかと。

仕様書そのものよりも The SGML Handbook を読む方がいいかも。英語版しかありませんが。

(名無しさん 2007-06-29 13:30:01 +00:00)

[30] Re: Freezing the HTML spec Re: Comments in HTML ? ( ( 版)) http://lists.w3.org/Archives/Public/www-talk/1992NovDec/0085.html

HTML の解放

[35] HTMLHTML4 まで SGML応用として定義されていましたが、 それはあくまで IETF/W3C の仕様書と W3C Validator だけの机上の空論に過ぎず、 現実には SGML に強く影響を受けた独自のマーク付け言語としか言えないものでした。

[36] HTML が現実には SGML でないことは誰の目にも明らかでしたが、 あくまでも SGML であると仮定する、あるいは XML (XHTML) への移行が進むはずなので過去の事項として問題とも考えないことが政治的に正しいとする風潮が00年代前半にはありました。

[37] Web Applications 1.0 (HTML5) は SGML とは関係しない独自の言語である HTML構文解析器を歴史上初めて自然言語により記述することに成功し、 王様は裸であると実証しました。これによって最大の“SGML応用”は消滅しました。

終焉

[38] XML への移行と HTML 仕様書の発展により、 SGML は事実上終焉を迎えました。今後新たに SGML応用SGML の実装が登場することもないでしょう。

[23] Re: [xml-dev] SGML DTDs for HTML 5.1 () http://lists.xml.org/archives/xml-dev/201611/msg00078.html

[67] Index () http://sgmljs.net/