導入
< はタグの始まりを表す特別な記号でした。では「3 < 5」のように 不等号そのもの をデータに書きたいときはどうするのでしょう。そのまま書くとXMLがタグの始まりだと勘違いしてしまいます。ここで使うのが 実体参照(entity reference) と CDATA です。
説明
XMLで特別な意味を持つ記号は、そのままでは中身に書けません。代わりに &名前; という決まった綴りに置き換えます。これを実体参照と呼びます。覚えるのは次の5つだけです。
| 書きたい文字 | XMLでの書き方(実体参照) | 名前の由来 |
|---|---|---|
< | < | less than |
> | > | greater than |
& | & | ampersand |
" | " | quotation |
' | ' | apostrophe |
たとえば「3 < 5 & 4 > 2」を要素の中身に書くと、次のようになります。
<formula>3 < 5 & 4 > 2</formula>
特に & は要注意 です。& 自体が実体参照の開始記号なので、文字としての & は必ず & と書きます。「AT&T」は AT&T です。
< と & は 常に 置き換えが必要です。> " ' は文脈によっては書けますが、迷ったら実体参照にしておけば安全です。
説明(CDATAセクション)
置き換える記号がたくさんあると読みづらくなります。ソースコードやHTMLの断片のように < や & を大量に含むテキスト を丸ごと入れたいときは、CDATAセクション が便利です。<![CDATA[ と ]]> で囲んだ範囲は、中の記号がすべて ただの文字 として扱われます。
<code><![CDATA[
if (a < b && b > 0) {
print("a & b");
}
]]></code>
CDATAの中では実体参照への置き換えが不要になります。唯一の制約は、中に ]]> という並びを書けない ことです(そこがCDATAの終わりだと解釈されるため)。
- 記号が数個 → 実体参照(
<など)で十分。 - コードやマークアップの塊 → CDATAで丸ごと囲むと読みやすい。
やってみよう
まずは <(= <)と &(= &)の2つを覚えましょう。この2つは実務でも頻出です。次章では、大規模なXMLで名前の衝突を防ぐ「名前空間」と、XMLが実際に使われている場所を見ていきます。