非検証処理器は、DTD内部部分集合の全体も含め、文書実体のみを整形式性について検査する必要があります。 [定義: 非検証処理器は文書の妥当性を検査する必要はありませんが、読んでいない引数実体への最初の参照までにDTD内部部分集合中で、あるいは読んだ引数実体中で読んだすべての宣言を処理する必要があります。これはすなわち、非検証処理器はそれらの宣言中の情報を属性値の正規化、内部実体の置換文の取込み、および既定の属性値の供給に用いなければなりません。] 非検証処理器は
の場合を除き、読んでいない引数実体への参照の後に遭遇した実体宣言や属性並び宣言を処理してはなりません。 なぜなら、その実体が上書きする宣言を含んでいるかもしれないからです。処理器は
standalone="yes"
standalone="yes"
の場合、それらの宣言を処理しなければなりません。
[2]
非検証処理器には引数実体や外部部分集合に現れる実体宣言を読んで処理する義務はありません。そのような文書では実体が宣言されていることという整形式制約はstandalone="yes"
の場合のみ適用されます。
[3] 検証処理器は利用者の任意選択により、DTD中の宣言によって表現された制約への違反とXML仕様書で示された妥当性制約への違反を報告しなければなりません。そのため、検証処理器はDTDの全体と文書で参照されているすべての外部解析対象実体を読んで処理しなければなりません。
[4] Q: 読んでいない実体への参照の後で、宣言を読んでいない実体への参照が出てきたらどうするのか?
<!ENTITY % unread SYSTEM "somewhere"> %unread; <!-- 読まない --> %unknown; <!-- 宣言を読んでいない -->
A:
なら整形式制約standalone
="yes"実体が宣言されていること
に違反するので致命的誤り。
そうでないなら、華麗にスルー。
(名無しさん)
<!-- これ自体は外部引数実体 -ー> %unread; <!-- 他で宣言されている外部実体、読まない --> <!ELEMENT %unknown; <!-- 宣言を読んでいない --> >
(名無しさん)
[6]
Q: 実体宣言と属性定義並び宣言の解釈に影響が出ることはわかったが、
要素型宣言や記法宣言はどうしたらよいのか?
要素内容空白
や記法
に影響がでるはずだが。