SGMLでは文書やDTDを作成する前に、SGML宣言を用意します。 そして、その、任意のSGML宣言に基づいて、DTDを作成したり、文書を作成します。
ここで、任意とは、文字通り任意であり、どういうSGML宣言を使おうと
SGMLのルールに従っていればよく、それを処理できるか否かは、文書を処理する
アプリケーションに依存する問題です。よって、SGML文書を流通させる場合、
状況によっては、受け取った文書が処理できないということもありえます。
しかし、「処理できない」事はSGMLの責任でもなんでもなく、文書を交換する
双方の責任になります。
では、XMLの場合はどうか?
XMLの場合には、
んだそうです。XMLの仕様にのっとったSGML宣言を考えてみることはできますが。
「XMLがSGMLのsubsetであり、かつ、SGML宣言が無い」ということは、 (勝手に推測しますと、)「あるXML文書を処理できるアプリケーションならば、 (一応)任意のXML文書を処理できる」という事になるかと思います。
「そんなこと言ったって、SGMLにはオプション機構がいっぱいあるじゃんか」と いう話もあるでしょうが、XMLでは、"subset"という位でSGML宣言で定義(指示?)できる 機構についてはかなり制限を設けてあります。
「百聞は一見にしかず」というわけで、XMLのSGML宣言の例(一部)を以下に書いて
みます。出展は、XML: PRINCIPLES, TOOLS, AND TECHNIQUES, World Wide Web Journal: Volume 2, Issue 4のP.52からの
SGML宣言で、一部、私が勝手に変更してあります。
#ところどころ日本語でコメントがありますが、その部分は無視して下さい。
<!SGML -- SGML Declaration for XML -- "ISO 8879:1996(ENR)" -- Extended Naming Rules に従う旨の最小表記 -- CHARSET BASESET "ISO Registration Number 176//CHARSET ISO/IEC 10646-1:1993 UCS-2 with implementation level 3//ESC 2/5 2/15/4/5" -- いわゆるUNICODEってやつ -- DESCSET ・ ・ ・ 128 32 UNUSED 160 65376 160 -- 2バイト文字を扱うため -- CAPACITY SGMLREF TOTALCAP 99999999 ・ ・ -- 規格参照容量集合はすべて99999999 -- ・ ・ LKNMCAP 99999999 SCOPE DOCUMENT SYNTAX SHUNCHAR NONE BASESET "ISO Registration Number 176//CHARSET ISO/IEC 10646-1:1993 UCS-2 with implementation level 3//ESC 2/5 2/15/4/5" DESCSET 0 65536 0 FUNCTION RE 13 RS 10 SPACE 32 TAB SEPCHAR 9 ITAB SEPCHAR 12288 --ideographic space-- -- ideographic spcae って何? -- NAMING LCNMSTRT 224-226 248-255 ・・・・・ ・・・・・・・・・・・・ ・・・・・・・・・・・・ 8560-8575 65345-65370 UCNMSTRT 192-214 216-222 ・・・・・ ・・・・・・・・・・・・ ・・・・・・・・・・・・ 8544-8559 65313-65338 NAMESTRT 58 95 170 ・・・・・・・・ ・・・・・・・・・・・・ ・・・・・・・・・・・・ 65490-65495 65498-65500 LCNMCHAR "-." UCNMCHAR "-." NAMECHAR 183 720 721・・・・・・・・ ・・・・・・・・・・・・ ・・・・・・・・・・・・ 65438 65439 NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF NET "/>" PIC "?>" -- NET と PIC の指定がミソ -- SHORTREF NONE NAMES SGMLREF QUANTITY SGMLREF ・ ・ NORMSEP 2 ・ ・ --ほとんど99999999--- -- BSEQLEN は(SHORTREF が NONE なので)not used だそうで -- -- DTAGLEN,DTEMPLEN(は DATATAG が NO(後述))なので not used だそうで -- -- 上記2行の(・・・)は私なりの解釈ですけど、いいですよね ? not used てことは、規格参照量集合に従うのかな? -- FEATURES MINIMIZE DATATAG NO OMITTAG NO -- こいつは面倒だね -- RANK NO SHORTTAG YES -- NET のために必要(らしい) -- LINK --全部 NO-- OTHER --全部 NO-- APPINFO NONE >