[1] 【SGML】 マーク区間の有効状態が文字データ
(CDATA) であるマーク区間(宣言)。
[2] XML では、CDATA 区間は文字データが出現可能なところにどこにでも出現可能です。
CDATA 区間は、そうしなければマークとして認知される文字を含む文塊を
escape するのに使います。 CDATA 区間は文字列
<![CDATA[ で始まり、文字列
]]> で終わります。
仕様書:
[3] CDATA 区間では、マーク区間終了
(規格参照具象構文や XML では ]]>)
だけが認知されます。
逆に言えば、マーク区間の内容に文字列 ]]>
を書くことは出来ません。
また、 CDATA 区間内では文字列は文字データとして、
つまりかかれたままに
解釈されます。
ですから実体参照は展開されません。
[4] ]]> という文字列を書きたいときは、 <![CDATA[ ... ]]]]>><![CDATA[ ... ]]> とでもするか、 CDATA 区間の使用を諦めるしか方法はありません。
[5] XML では、状態見出し語指定は正確に CDATA
だけでなければなりません。 ps を使うことは出来ませんから、
引数実体参照を使ったり、前後に空白を入れることは出来ません。
複数或いは空の状態見出し語を指定することもできません。
[6] XML では、 CDATA 区間が文書実現値中で使用できる唯一のマーク区間です。
[11]
一部で CDATA 区間内であっても
]]> と書けば
]]> と解釈されているという解説がありますが、
これは間違いです。
CDATA 区間内で
]]> と書いたら本当に ]]>
(CDATA 区間の外で ]]&gt; と書くのと同じこと。) になります。
(名無しさん)
[12]
いつ使うのか?:
というのは存在しません。
CDATA 区間を必ず使わなければならない場面CDATA 区間はいわゆる構文糖で、
あったら便利かもしれないけど無くても困らない
ものです。
XML の要素の内容では < や &
や ]]> を直接書けず、
< や & や
]]>
などと書かなければなりません
(そうしなければタグなど特別な意味で解釈されてしまいます)。
これらが沢山含まれる時は、書き換えが面倒です。
そこで CDATA 区間を使うと、 <
や & をそのまま書くことができるようになります。
(]]>
だけは CDATA 区間の終わりを表すので、
CDATA 区間でも書けません。)
(名無しさん)
[13]
タグが含まれる内容の例:
XHTML の pre 要素を使って
XML の使用例を示したいとします。
例の中には XML のタグが沢山含まれます。
一々 < と書くのは面倒なので、
CDATA 区間を使います。
<pre><![CDATA[
<根>
<葉/>
<節点>
<節点>
<葉/>
</節点>
<葉/>
<節点>
<節点>
<葉/>
<葉/>
</節点>
<葉/>
</節点>
</節点>
</根>
]]></pre>(名無しさん)
[14]
スクリプトを書く例:
XHTML の script 要素で JavaScript
のコードを書きますが、比較演算子の <
や論理演算子の && を沢山使います。一々
< や &&
に書き直すのは面倒なので、 CDATA 区間を使います。
<script type="text/javascript">
<![CDATA[
var els = document.getElementsByTagName ('dfn');
var elsLength = el.length;
if ((0 < elsLength) && (elsLength < 100)) {
for (var i = 0; i < elsLength; i++) {
var el = els[i];
index.addItem (el, el.textContent);
}
}
]]>
</script>(名無しさん)
[15]
HTML と CDATA 区間:
仕様上は HTML でも CDATA 区間は使えますが、
対応している Webブラウザはほとんどありません。
(名無しさん)
[7] CDATA 区間は、マーク区間の一種です。 XML で使用できるマーク区間には、他に条件区間があります。
SGML では、 CDATA 区間と似た RCDATA
区間が利用できます。 RCDATA 区間では、
参照だけは認知されます。
[8] DOM では、 CDATA 区間は CDATASection
節として扱われます。
XML情報集合や XPath では、 CDATA 区間は取り扱いません。 CDATA 区間を含む文書実現値に対応する木では、 CDATA 区間の文字データはそのまわりのデータと一緒に文節になります。
[10] 要素型宣言で CDATA
として宣言された要素型の要素の内容は
CDATA 区間と似た状態になります。
[9] CDATA として宣言された実体を参照することで、
(文字データを書く場所こそマーク区間内容ではなく実体文ですが)
似たような結果を得られます。