S-JIS[2002-07-20/2010-02-01]

XMLの注意点について

XML自体はとっても単純なので解説は他に譲るとしてー、自分で書いてて引っかかった点だけ簡単に。

ちなみに、サンプルとしてはドラクエ7のモンスター分布をどうぞ。


XML宣言

XMLでは、ファイルの先頭にXML宣言(XML declaration)を入れる。[2008-06-18]

<?xml version="1.0" encoding="Shift_JIS"?>

「<?xml」で始まるのがXML宣言。

なお、「<?」で始まり「?>」で終わるのはXMLの処理命令(processing instructions)であり、XML宣言は処理命令の一種らしい。


xmlns

xslファイルのxsl:stylesheetタグでxmlns:xslに "http://www.w3.org/TR/WD-xsl" という値をセットしている。
これが何を意味するんだかよく分からないけど、1文字でも間違っていると動かない(泣)


コメント(注釈宣言)

XMLのコメントは、 「<!--」で始まり「-->」で終わる。[2002-11-03]

コメントは ネストさせる事は出来ない。ネストさせると、内側のコメントの開始箇所で文法エラーになる。
エラーにならないサンプルエラーになるサンプル(ソースは、ダウンロードしてテキストエディタか何かで見て下さい)

コメント開始後、最初の「--」の直後が「>」(コメント終了)でないと「間違った構文である」と解釈される。[2008-06-18]
つまりコメント終了「-->」が来る前に「--」が入るのは不可。
例えば「<!----」や「---->」「--->」「<!--コメ--ント-->」は不可。

SGMLでは「<!>」も空コメントらしいが、XMLではダメっぽい。


実体参照・文字参照

XMLで使われる特殊な文字は実体参照で表す。[2008-06-18]
また、文字コードを使って表すことも出来る(文字参照)。
どちらも「&」で始まり「;」で終わる。

実体参照 &amp; &
&lt; <
&gt; >
&apos; '
&quot; "
文字参照 &#n; 十進数で文字コードを指定
&#xh; 十六進数で文字コードを指定

HTMLの実体参照
自前の実体参照を定義する方法


CDATAセクション

XML内ではタグを使うので、「<」「>」「&」といったXMLの解釈に使われる文字は「&lt;」「&gt;」「&amp;」といった別の記号(実体参照や文字参照)を使う必要がある。[2008-06-16]
これらの文字を頻繁に使う場合は一々こういった記号にするのは面倒なので、CDATAセクション(CDATA区間)を使うとよい。

CDATAセクションは「<![CDATA[」で始まり、「]]>」で終わる。「]]>」が来るまでの間、「<」でも「>」でも「&」でも自由に使うことが出来る。

<p>」というデータを表現する例:

<タグ><![CDATA[<p>]]></タグ>
<タグ>&lt;p&gt;</タグ>

上記の2つは、全く等価。CDATAという構文は“あると便利”という程度のシロモノらしい。


]]>」はCDATAセクションの終わりを表すので、それ自身をデータとして表現することは出来ない。
これは、CDATAセクション1つだけで表すのは諦める。

abc]]>zzz」を表現する例:

<![CDATA[abc]]]]>&gt;zzz
<![CDATA[abc]]]]><![CDATA[>zzz]]>
abc&#x5d;&#x5d;&gt;zzz

]]>」自身をデータとして表す為に、実体参照を使ってエスケープする方法が紹介されていることがあるが、それは誤り。[2010-02-01]

<![CDATA[abc]]&gt;zzz]]>

]]の直後が>でないから、確かにCDATAセクションの終わりとは認識されない。
しかしCDATAセクションは&や>がそのまま書けるというものなので、&gt;の「&」はそのまま使用される。つまり「&gt;」が自動的に「>」に変換されるようなことは無い。(変換されたら、それはCDATAセクションではない)


関連リンク

XML参考書 参考にした本 [2004-03-16]

技術メモへ戻る
メールの送信先:ひしだま