#?SuikaWiki/0.9 [[#comment]] * SGML 宣言の構文 [4] SGML 宣言は、必ず[[規格参照具象構文]]でないといけないこととなっています。 しかも、[[引数]]・[[注釈]]には[[マーク文字]]と[[最小データ文字]]しか使うことができず、 それ以外が必要なら (可能な箇所では) [[文字参照]]を使うこととなります。 [[実体参照]]は、まだ定義されていないので、使うことはできません。 ([[JISX4151]]‐1992 12. 参照。) - [PRE[ [DFN[SGML 宣言]] := [CODE(SGML)[[[mdo]]]] "SGML" 1*[[ps]] [[最小表記]] ;; SGML の版 1*ps [[文書文字集合]] 1*ps [[容量集合]] 1*ps [[具象構文範囲]] 1*ps [[具象構文]] 1*ps [[機構使用]] 1*ps [[応用特有情報]] *ps [CODE(SGML)[[[mdc]]]] ;; (171) ]PRE] - [CODE(ABNF)[[DFN[ps]] := [[s]] / [[注釈]] ;; / [[引数実体参照]] / [[Ee]]]] - [CODE(ABNF)[[DFN[注釈]] := [CODE(SGML)[[[com]]]] *文字 [CODE(SGML)[com]] - [CODE(ABNF)[[DFN[mdo]] := "<"]] - [CODE(ABNF)[[DFN[mdc]] := ">"]] - [CODE(ABNF)[[DFN[com]] := "--"]] - [CODE(ABNF)[[DFN[文字]] := [[最小データ文字]] / <[&#<>!|%;*@^_{}~]> / "[" / "]" / <"> / [[TAB]] ;; = TAB / CR / LF / SP / 印字可能文字 − <[$\`]> = %x09 / %x0A / %x0D / %x20-23 / %x25-%x5B / %x5D-5F / %x61-7E]] * SGML 宣言の省略 [2] [[SGML]] 宣言は、その SGML 文書を単一システムでのみ使用する場合は、省略することが出来ます。 (システムが補充します。) しかし、複数のシステムをまたいで使用する場合には省略できません。 ([[JISX4151]]‐1992 5.2.3 参照。) [3] >>2 例えば [[XML]] で SGML 宣言が必要ない [WEAK[(実際には書くことが出来ない)]] のは、 [[XML処理系]]というシステムでの使用だけが仮定されているからです。 XML 以外の SGML システムに転送するときには、 SGML 宣言が補われることになります[WEAK[(が、それは整形式ではなくなってしまいます)]]。 [[#comment]] * 参考文献 - [1] ''マニアックな文法論議 - SGML宣言の読み方'' [[#comment]] * メモ - [5] SGML 宣言は規格参照具象構文でないといけないから、[[前書き]]や[[文書実現値]]と同じ実体に含めるとしたら [[ISO/IEC646]] [[旧IRV]] の[[超集合]]か、最低でも [[ISO/IEC646の版]]の超集合で符号化されていないと役に立たないんじゃ・・・と思ったんだけど、よく考えれば[[文書文字集合]]は具象構文とは別立てだから、たとえ [[EBCDIC]] だろうと問題はないんだ。