[9] 解析対象実体のうち外部実体であるものを、 外部解析対象実体といいます。
[16] 最も広い意味では、非解析対象実体以外の外部実体 (XML構文解析器が処理対象とする外部実体) をすべて外部解析対象実体といいます。より狭い意味では、 XML構文解析器の大元の処理対象である文書実体、 実体参照ではなく文書型宣言本体によって参照する外部部分集合実体、 DTD 内でのみ参照される外部引数実体を含まないことがあります。
[13] 外部解析対象実体は、XML の必須の機能ではありません。 実装していない環境も少なくありません。つまり相互運用性に乏しく、 使うべきではありません。
[37] いつでも使える標準的な代替手段はありません。 Web であれば JavaScript
と XHR を使う、 XSLT であれば xslt:include
を使う、
など応用依存の方法を検討する必要があります。
[17] XML 仕様書は「外部解析対象実体」の定義を明確に示してはいません。
[18] <http://www.w3.org/TR/xml/#sec-line-ends> では「external parsed entities (including the document entity)」と注釈付きながら、最も広い意味で使っています。
[21] <http://www.w3.org/TR/xml/#charencoding> は注釈なしで最も広い意味で使っています。
[19] <http://www.w3.org/TR/xml/#sec-TextDecl> では文書実体以外の外部実体かつ非解析対象実体でないものすべてを指しています。
[20] <http://www.w3.org/TR/xml/#wf-entities> の「Well-Formed External Parsed Entity」 は外部一般解析対象実体のことを指しています。「external general parsed entity」 とも言っています。
[22] <http://www.w3.org/TR/xml/#include-if-valid> の 「external parsed entity reference」は外部一般解析対象実体の参照を指しています。
[23] <http://www.w3.org/TR/xml/#as-PE> も外部一般解析対象実体を指しています。
[24] <http://www.w3.org/TR/xml/#dt-validating> もおそらく外部一般解析対象実体を指しています。
[25] RFC 2376 や RFC 3023 は外部一般解析対象実体の意味で使っています。
[33] 外部解析対象実体は、他の実体から実体宣言および実体参照を介して参照されることで文書の一部を構成しています。 XML処理器の動作は、 XML 本体の仕様書で規定されています。
[31] 文字コードの取り扱いについては、XMLにおける文字コードを参照してください。
[34] >>8 の通り、外部解析対象実体には専用の MIME型が用意されています。 XPointer もそれらに関する素片識別子を定義しています。 しかし、他の文書が介在しない単独の外部解析対象実体をどう処理するかはどの仕様書でも明確には定義されていません。
[8] 外部解析対象実体の MIME型としては、
application/xml-external-parsed-entity
か
text/xml-external-parsed-entity
を使うべきです
>>28。後者よりは前者を使うべきです >>28。
[14] 文書実体、外部部分集合実体、外部引数実体も外部解析対象実体に含まれることがありますが、 RFC 3023/RFC 7303 の定義上は別のものとされており、それぞれより適切なMIME型が用意されています。
[32] 外部解析対象実体が文書実体でもある場合を除き、
application/xml
や application/xml
を使ってはなりません >>28。
text/xml-external-parsed-entity
text/xml-external-parsed-entity
で供給していたりします。application/xml
と「外部解析実体 (文書実体をのぞく。)」の2つでよかったのに。外部引数実体 ⊂ 外部解析実体
は仕様書を読めば明らかなのであって。[26] text/xml-external-parsed-entity
には次の引数があります。
[27] application/xml-external-parsed-entity
には次の引数があります。
[10] RFC 2376 時代は text/xml
、application/xml
を使うことになっていましたが、 RFC 3023 によって分離されて
text/xml-external-parsed-entity
と
application/xml-external-parsed-entity
が新設されました >>11。
text/xml
の歴史の項も参照。[12] 外部解析対象実体は、文書実体としても使われる場合を除き、
text/xml
や application/xml
を使ってはならないとされました >>11。
[15] charset
の取り扱いや
text/*
と application/*
の違いについては text/xml
の項を参照してください。
[29] RFC 3023 の改訂である RFC 7303 も、基本的な定義は変わっていません。
ただし文字コードの決定方法は変更されています (XMLにおける文字コードを参照)。
それにともない application/xml-external-parsed-entity
を使うべき >>28 となりました。
[38] XPath and XQuery Functions and Operators 3.1 () <https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-parse-xml-fragment>
application/xml
とtext/xml
の場合と同様です。