[1] [XML処理器の定義] XML処理器とはXML文書を飛んでその内容と構造へのアクセスを提供するソフトウェアです。 XML仕様書はXMLデータをどう読まなければならないかを規定します。
[2] [内部引数実体中のマーク宣言] 外部マーク宣言とは外部部分集合か引数実体に現れるマーク宣言です。ここで、引数実体には外部実体も内部実体も含まれます。非検証処理器は内部引数実体を読む必要もありません。
[3] [符号化宣言と改行] (XML 1.1) 非ASCII文字の改行は符号化宣言を読むまでは確実に認識することができませんから、XML宣言やテキスト宣言で使うのは致命的誤りです。
[4] [未読実体と取込み正規化性] (XML 1.1) 非検証処理器は読んでいない外部実体の取込みによって起こり得る正規化の崩れを無視しなければなりません。
[5] [既読属性既定値の報告] XML処理器が既定値の宣言を読んでいて属性指定がない属性がある要素に遭遇したときは、その既定値を持つ属性を応用に報告しなければなりません。
[6] [宣言未読属性の属性型] 非検証処理器は、宣言を読んでいない属性
[7] [属性値指定中の宣言未読実体参照] 属性値指定に宣言を読んでいない実体への参照が含まれるのは誤りです。
[8] [外部マーク宣言 (実体宣言)] 非検証処理器には引数実体や外部部分集合に現れる実体宣言を読んで処理する義務はありません。
[9] [UTF-8とUTF-16] XML処理器はUTF-8やUTF-16の実体を読めなければなりません。読める必要があるのはUTF-8とUTF-16の実体だけです。
[10] [その他の文字符号化方式] XML処理器はUTF-8やUTF-16以外の文字符号化方式の実体も読める方が望ましいかもしれません。
[11] [妥当性検証するなら取込む実体参照]
表に妥当性検証するなら取込む
の印がついている場合、XML処理器は、文書を妥当性検証するために、解析対象実体への参照を認識したら置換文を取込まなければなりません。参照されているのが外部実体であって、処理器が妥当性検証をしないのであれば、その実体の置換文を取込んでも構いませんが、必要ではありません。非検証処理器が置換文を取込まない場合には、応用に実体を認識したけど読まないと通知しなければなりません。
[12] [既読実体の整形式制約違反の報告] XML処理器は文書実体および読んだ解析対象実体の整形式制約違反を報告しなければなりません。
[13] [検証処理器は全部読む] 検証処理器は文書から参照されているDTD全体とすべての外部解析対象実体を読んで処理しなければなりません。
[14] [マーク宣言の処理]
非検証処理器は妥当性を検査する必要はありませんが、DTD内部部分集合と読んだ引数実体の中にある、最初の読んでいない引数実体への参照までのすべての宣言を処理する必要があります。すなわち、属性値の正規化、内部実体の置換文の取込み、属性の既定値の供給のためにそのような宣言に含まれる情報を使わなければなりません。
の場合を除き、最初の未読引数実体への参照以後の実体宣言と属性定義並び宣言を処理してはなりません。standalone
="yes"
の場合は、そのような宣言を処理しなければなりません。standalone
="yes"
[15] [応用の安全な動作] 検証処理器はすべての実体を読んで整形式制約と妥当性制約の違反を報告しなければなりませんが、非検証処理器は文書実体以外読む必要がありません。従って、
[16] [箱の中の鍵] 外部情報がないと、XML処理器は内部にある名札を読むまで文字符号化方式がわかりません。
[17] [文字符号化方式の判別] いくつかのバイト列を発見した場合は、それに従って符号化宣言を読んで文字符号化方式を確定しなければなりません。