#?SuikaWiki/0.9

[1] 【[[XML]]】

> [DFN[条件区間 (conditional section)]]
は、[[文書型宣言]][[外部部分集合]][INS[又は[[外部引数実体]]]]の一部であって、
これを領める[[見出し語]]に基づき [[DTD]]
の論理構造に含まれ、または除外される。 [INS[(<http://www.w3.org/TR/REC-xml#sec-condition-sect>, <http://www.w3.org/XML/xml-V10-2e-errata#E60>)]]

[2]
- conditionalSect = includeSect / ignoreSect ;; [61]
- includeSect = "<![" ''[ [[S]] ] 'INCLUDE' [ S ]'' "[" extSubsetDecl "]]>" ;; [62]
- ignoreSect = "<![" ''[ S ] 'IGNORE' [ S ]'' "[" [ ignoreSectContents ] "]]>" ;; [63]
- ignoreSectContents = Ignore *("<![" ignoreSectContents "]]>" Ignore) ;; [64]
- Ignore = *Char − (*Char ("<![" / "]]>") *Char) ;; [65]

式 62, 63 の中の強調部分が、[[引数実体参照]]に置換され得る部分です。
他の部分に実体参照を使うことは出来ません。[WEAK[(式 64 の部分に引数実体参照のように見えるものを使うことは出来ますが、[[認知]]されません。)]]

また、式 61 の部分全体が他の[[実体]]の一部であることは構いませんが、
その途中で分断されていてはいけません。
(悪い例:
[PRE[
<!ENTITY e1 "<![CODE[ foo">]]
<!ENTITY e2 " bar ]]>">
%e1;%e2;
]PRE]

)

(以上、[[XML//妥当性制約]]「Proper Conditional Section/PE Nesting」
(条件区間と引数実体が適当に入れ子になっていること)。)

- [3] [[SGML]] とは違って XML では、[[内部部分集合]]や[[文書実現値]]で条件区間を使うことは出来ません。また、条件区間だけが DTD 中で使えるマーク区間です。[[状態見出し語]]を複数指定することや一つも指定しないこともできません。
- [4] XML の [[CDATA区間]]とは違って、[CODE(SGML)[状態見出し語指定]]の部分の状態見出し語の前後に[[空白]]を入れたり、そもそも引数実体を使って表現したりすることが可能です。
- [5] 含まれるマーク区間の中身には、外部部分集合で書くことが出来るものは何でも、つまり[[実体宣言]], [[要素型宣言]], [[属性並び宣言]], [[記法宣言]], [[処理指令]], [[注釈]], [[空白]], 入れ子の条件区間を書くことが出来ます。

[6] 激しくひどい話だと思うのですが、
<http://www.w3.org/XML/xml-V10-2e-errata#E60>
で Clarification (明確化) と称してひどく非互換な変更が行われてます。

それまで条件区間を使えたのは外部部分集合だけだったんですが、
内部部分集合から参照されている外部引数実体でも OK
ってことになってます。


[7]
>>6 内部部分集合で参照される外部引数実体ではマーク区間宣言が認められますが、
内部部分集合で参照される内部引数実体では認められません。
([[名無しさん]])

