今日の話題は純粋に技術的なので、ほとんどの人はつまらない or 意味不明かと思います。 XMLで要素(エレメント)の値を設定する際に、CDATAセクションを使用する場合と、そのまま設定する場合と2通りの方法が考えられます。
例えば、"You & I"という値をエレメントgreetingに設定するには、
- <greeting>You & I</greeting>
- <greeting><!CDATA[You & I]]></greeting>
の二通りが大きく言って考えられるかと思います。要するに、CDATAセクションを使えば、(頭の中で)「&」を「&」に置換したり、「>」を「>」に置換したりする必要がないということですな。
では、値が ]]> を含む場合はどうすればいいでしょう? 例えば、"hello]]>world"という値をエレメントgreetingに設定する際、馬鹿正直な私の解は、
- <greeting><!CDATA[hello]]>]]><!CDATA[world]]></greeting>
でしたが、同僚の別解は、
- <greeting><!CDATA[hello]]]]><!CDATA[>world]]></greeting> というものでした。
(人手で入力するのではなくて)アプリケーションが出力するXMLなんだから、そもそもCDATAセクションを使う必要がないじゃん、という突っ込みは無しと言うことで。