XML 宣言


整形式 XML 文書

XML は HTML と異なり、仕様に厳密に従う必要があります
XML の制定された使用にしたがった文書を整形式と呼びます

HTML はエラーが存在せず、記述が間違っていてもブラウザは無理やり表示しました
しかし、この無理やりエラーを修正する方法は一切定義されていなかったので
正しく書かれていない HTML はブラウザによって異なる表示のされたかをしました
さらに最悪なことに、製作者(私も含む)も正しい HTML を書く努力を失ってしまったのです

XML は、この悪い習性を直すべく、パーサはエラーの感知までしか行いません
仕様に準拠した XML パーサは、エラーを修正するようなことはしません
これを念頭に、XML を書く時はしっかりと仕様に従うようにしてください

XML 文書は、必ず最初に XML 宣言 を指定します
XML 宣言は、この文書が XML であるということをパーサに伝えます
同時に、XML のバージョンやエンコード方式などを属性で伝えることができます

XML 宣言のようなパーサに直接伝えるべき情報を XML 処理命令 と呼び
XML 処理命令は、必ず <? で始まり ?> で終わります
そして、<? の次の来る文字列が XML 処理命令の名前であると解釈されます
XML 宣言は xml を指定します

XML 宣言には、version 属性、encoding 属性、standalone 属性があります
version 属性は XML のバージョンを指定します
筆者がこれを書いている時点では、まだ XML は 1.0 しか発表されていません

encoding には文字のエンコード方式を指定します
XML はデフォルトエンコード方式で UTF-8 を採用しています
そのため、通常は UTF-8 を指定すれば問題ないと思って良いでしょう

UTF-8 は、Unicode の種類で 1 バイト文字を 1 バイトに圧縮したものです
XML は、Unicode に対応していて、Unicode を用いられることを前提として制定されています

最後の standalone 属性は、この XML 文書が単一で完成されるかどうかを表します
詳しくは後ほど説明しますが、XML は他の文書と混合させることができます
つまり、クライアントコンピュータで複数の文書をインクルードする仕組みを与えています

XML 文書がそれ一つで完成しているのであれば standalone 属性で "yes" を指定します
そうでなければ "no" を指定します
"yes" の場合は省略してもかまいません

属性を指定するには、次のように指定します

属性名="値"

例えば、バージョンを指定する時は version="1.0" と指定すれば良いのです
XML 宣言は省略できないわけではありませんが、省略することは好ましくありません
では、これらのことを踏まえて次の XML 文書を見てください
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<title>Kitty on your lap</title>
サンプルを見る

さて、これが XML 文書です
"サンプルを見る" から XML ファイルにリンクしているので見ても良いでしょう
XML 文書は、一般的に *.xml という拡張子を持っています

もし Microsoft Internet Explorer で上の XML 文書を開くと
おそらく、タグも含めて全てがそのまま文字として表示されたでしょう
少なくとも HTML の様に整形されるようなことはありません

XML はブラウザのために書かれるものではありません
Internet Explorer は、XML 文書の内容を丸々表示しただけです
これは、ブラウザが title というタグの意味を与えられていないからです

上の XML のサンプルには <title> というタグが含まれています
HTML にも title タグはありましたが、それとは何の関係もないので忘れてください
前回書きましたが、XML は HTML を作ることができるほど強力です
この title の様に、XML は独自のタグを定義することを可能としているのです
ただし、私はまだ上の文書で title タグの意味を定義していないのです

タグの定義は自由です
title の代わりに document としても良いですし、I_love_cat でもいいでしょう
タグについては、次回より詳しく解説いたします

XML 文書で、空白は認知されません
例えば、次のサンプルは上のサンプルとまったく同じです
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
	<title>Kitty on your lap</title>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<title>
Kitty on your lap
</title>
ただし、例外として改行文字は要素の内容として認知されることがあります
XML アプリケーションによっては、これを何らかの形で処理するかもしれません
要素の内部以外であれば、改行文字もホワイトスペースとして無視されます



前のページへ戻る次のページへ