Experience Prototypistのマルチリンガル子育て+プログラミングブログ

Design Thinking、語学(英語、中国語、韓国語)、日中マルチリンガル育児、littleBitsやRaspberry Pi, Arduinoを使ったExperience Prototypingネタ。

エレメントの値に]]>を含める

今日の話題は純粋に技術的なので、ほとんどの人はつまらない or 意味不明かと思います。 XMLで要素(エレメント)の値を設定する際に、CDATAセクションを使用する場合と、そのまま設定する場合と2通りの方法が考えられます。

例えば、"You & I"という値をエレメントgreetingに設定するには、

  • <greeting>You &amp; I</greeting>
  • <greeting><!CDATA[You & I]]></greeting>

の二通りが大きく言って考えられるかと思います。要するに、CDATAセクションを使えば、(頭の中で)「&」を「&amp;」に置換したり、「>」を「&gt;」に置換したりする必要がないということですな。

では、値が ]]> を含む場合はどうすればいいでしょう? 例えば、"hello]]>world"という値をエレメントgreetingに設定する際、馬鹿正直な私の解は、

  • <greeting><!CDATA[hello]]>]]&gt;<!CDATA[world]]></greeting>

でしたが、同僚の別解は、

  • <greeting><!CDATA[hello]]]]><!CDATA[>world]]></greeting> というものでした。

(人手で入力するのではなくて)アプリケーションが出力するXMLなんだから、そもそもCDATAセクションを使う必要がないじゃん、という突っ込みは無しと言うことで。