external subset

外部部分集合 (SGML、XML)

[14] SGML および XML文書型宣言連結型宣言によって直接参照される外部実体外部部分集合実体 (external subset entity) といい、 外部部分集合実体に含まれるもの全体を外部部分集合 (external subset) といいます。

[15] 外部部分集合実体のことをしばしば DTD と呼びますが、 本来 DTD文書型宣言外部部分集合内部部分集合に含まれる DTD宣言の集合のことを指しています。これには外部部分集合実体の他に内部部分集合引数実体も含まれています。

[16] 外部部分集合実体から直接又は間接に参照される引数実体外部部分集合の一部であるのかどうかは定かではありません。

仕様書

外部部分集合

[9] 外部部分集合 (external subset) は、 文書型宣言部分集合のうち、外部宣言実体中に存在する部分です WebSGML K.2.1.2

[10] 規格参照具象構文で表現した時に、 <!DOCTYPE doctype PUBLIC "foo" [<!>]>PUBLIC "foo" で指定した外部解析実体のことを、 外部 DTD サブセットと呼ぶのです。

これに対して、 <!> の部分を、内部部分集合と呼びます。 文書型宣言はこの両者から構成されます。 (一方又は両者がであることもあります。)

[11] Web SGML は >>9 のようにきてしていますけど、ここはあえて、連結型宣言にも外部部分集合はあるのだ! と主張したい。

[12] SGML宣言も文書型宣言や連結型宣言と似た構文のマーク宣言が使われますが、外部参照の SGML 宣言を「外部部分集合」とは言いません。 SGML 宣言には宣言部分集合 (内部部分集合) が存在しないからです。

[13] 誤り訂正日記 - d:id:quaa ( 版) <http://d.hatena.ne.jp/quaa/20071108#p1>

外部部分集合実体

[1]

外部部分集合実体 (external subset entity)
文書型宣言外部識別子パラメタによって宣言され、 内部部分集合の末尾で (暗黙的に) 参照される実体(Web SGML K.2.1.1)

[2] つまりは、外部部分集合となる実体のことです。

文書型宣言の外部識別子引数は、 たとえば規格参照具象構文では、次のように表されます。

  <!DOCTYPE doctype PUBLIC "-//example//DOCTYPE doctype//en"
                    "http://www.example.com/doctype" [
    <!-- 内部部分集合 -->
  ]>

(PUBLIC 以下の部分です。)

この外部識別子引数で参照される実体が外部部分集合実体です。

[3] 素のSGML では 文書型宣言に指定する外部識別子が表す実体と呼ばれています。

[4] JIS X 4151‐1992 10.1 で、この実体は その文書型宣言部分集合の最後に参照してその一部 (又は全部) とする とされています。

[8] >>4 より、 >>2 の例は次の例と実質的に等価です。

  <!DOCTYPE doctype [
    <!-- 内部部分集合 -->
    
    <!ENTITY % 外部部分集合
                    PUBLIC "-//example//DOCTYPE doctype//en"
                    "http://www.example.com/doctype">
    %外部部分集合;
  ]>

[5] >>4 の規定により、 内部部分集合が外部部分集合に先立って解釈されます。ですから、 実体宣言属性並び宣言が両者にあれば内部部分集合の側のものが優先されます。 また、外部部分集合で定義した引数実体を内部部分集合で参照することは出来ません。 (内部部分集合を解釈する時点でまだ読まれていませんから。)

[6] Web SGML の外部部分集合の定義は文書型宣言だけで連結型宣言は無視されていますが、 本当は連結型宣言の外部識別子引数で参照される実体も外部部分集合実体と呼んでも良いですよね。

[7] 外部部分集合実体は定義上引数実体の一種です。

[22]外部部分集合実体」は Web SGML の用語で、 XML では外部部分集合と区別せず使われます。

MIME 型

[17] XML外部部分集合実体MIME型は、 application/xml-dtd を使うべきです >>24, >>19

[18] このMIME型外部部分集合実体の他、外部引数実体にも使われます >>19
[23] RFC 2376 時代は text/xmlapplication/xml を使うことになっていましたが、 RFC 3023 以後禁止 >>24, >>19 されています。