[1] 【SGML】 公開識別子からシステム識別子への変換を定義する文書, あるいはその文書形式。
[7] ABNF です。厳密な定義は >>2 の仕様書に載っている
SGML//生成規則//表記法によるものを参照して下さい。
- 型録 = *ps *((拡張外部識別子 / その他の情報) 1*ps)
- その他の情報 = 見出し語 *(1*ps 引数)
- 見出し語 = システム文字列d
- 引数 = システム文字列d / (lit 1*システム文字b lit) / (lita 1*システム文字ba lita)
- 拡張外部識別子 = (公開識別子見出し語 1*ps 公開識別子 1*ps 保管物体識別子) / (名前見出し語 1*ps 実体名指定 1*ps 保管物体識別子) / (無名見出し語 1*ps 保管物体識別子)
- 公開識別子見出し語 = 'PUBLIC' / 'DTDDECL'
- 名前見出し語 = 'ENTITY' / 'DOCTYPE' / 'LINKTYPE'
- 無名見出し語 = 'SGMLDECL' / 'DOCUMENT'
- 実体名指定 = 1*拡張名前文字a / (lit 1*拡張名前文字b lit) / (lita 1*拡張名前文字ba lita)
- ;; 「実体名」には、文書型名及び連結型名を含む。
- 保管物体識別子 = 1*システム文字a / (lit 1*システム文字b lit) / (lita 1*システム文字ba lita)
- ;; 現在のファイル・システムで利用可能なファイルの識別子であるべき。
- ;; 特に、
POSIX 可搬ファイル名文字集合 = ALPHA / DIGIT / "." / "-" / "_"
のみから構成されるなら、ファイル名とみなさなければならない。 - ;; 相対経路名である場合は、型録ファイルからの経路を示す。
- ps = s / 注釈
- 注釈 = com システム文字列c com
- lit = <"> ;; 二重引用符
- lita = "'" ;; 一重引用符
- com = "--"
- 公開識別子 = <ISO 8879 公開識別子>
- s = <ISO 8879 規格参照具象構文 s>
- 拡張名前文字a = 拡張名前文字 − (NULL / lit / lita / s)
- 拡張名前文字b = 拡張名前文字 − (NULL / lit)
- 拡張名前文字ba = 拡張名前文字 − (NULL / lita)
- 拡張名前文字 = <任意の文字>
- システム文字a = システム文字 − (NULL / lit / lita / s)
- システム文字b = システム文字 − (NULL / lit)
- システム文字ba = システム文字 − (NULL / lita)
- システム文字列c = *システム文字 − (*システム文字 com *システム文字) − (NULL)
- システム文字列d = 1*システム文字a − (公開識別子見出し語 / 名前見出し語 / 無名見出し語)
- システム文字= <任意の文字>
- ;; システム文字の列は、少なくても1024文字までは扱えることが保証されている。
PUBLIC
- 指定した公開識別子で識別される実体の実体文を、指定した保管物体識別子で識別される物体とする。
ENTITY
- 名前が実体名指定と一致する実体の実体文を、指定した保管物体識別子で識別される物体とする。
DOCTYPE
- 文書型名が実体名指定と一致する文書実体の文書型定義の外部部分集合となる実体文を、指定した保管物体識別子で識別される物体とする。
LINKTYPE
- 連結型名が実体名指定と一致する連結型宣言で指定される実体の実体文を、指定した保管物体識別子で識別される物体とする。
SGMLDECL
- 指定した保管物体識別子で識別される物体をSGML宣言の入った実体として使用する。
DTDDECL
- 公開識別子が文書型宣言のものと一致する文書実体について、指定した保管物体識別子で識別される物体を SGML 宣言の入った実体として使用する。
DOCUMENT
- 指定した保管物体識別子で識別される物体を構文解析を開始する実体として使用する。 (この見出し語を使った指定が複数あることは、禁止はしないが認めもしない。)
[8] SGML 宣言は、
- 文書に明示されているもの
DTDDECL
で指定されたものSGMLDECL
で指定されたもの
という優先順を持ちます。
もちろん、文書型宣言は具象構文が事前にわかっていないと読めないのですが、
大体の SGML 文書はその辺りは規格参照具象構文と同じでしょうから、
ほとんど問題ないでしょう。