|
JAVA Developer 2003年11月号より転載
●文字
XML文書に使用できる文字は、UnicodeおよびISO/IEC 10646に規定された文字とタブ、改行、復帰です。これらの中で、属性の区切りとなる空白は、1つ以上のスペース文字、タブ、改行、復帰です(※2)。また、実体参照(entity reference)と文字参照(character reference)を使用することもできます。
※2 XMLでは、空白の処理を指示する属性として、「xml:space」が用意されています。属性値は、defaultかpreserveのどちらかです。
xml:space default|preserve
|
defaultはデフォルトの処理モードを適用することを意味し、preserveの場合はすべての空白をそのまま保存します。
実体参照は、XML文書では特別な意味を持つ文字を表記する方法です(表1)。
表1 定義済みの実体
| 文字 |
表記方法 |
| < |
&lt; |
| > |
&gt; |
| & |
&amp; |
| ' |
&apos; |
| " |
&quot;
|
たとえば、内容中に<を使いたい場合は、&lt;と表記します。また、実体参照は後述する文書型宣言に定義しておくことで、XML文書内で繰り返し使うようなフレーズ(実体)を使用することができます。表記形式は、次のとおりです。
文字参照は、ISO/IEC 10646によって定められた文字コードを使って表記する方法です。キーボードから直接入力できない文字を使いたいときなどに便利です。文字コードは10進数または16進数のどちらも使用できます。16進数を使う場合には、xは必ず英小文字、文字コードのA〜Fは英大文字と英小文字のどちらでもかまいません。
&#10進コード; または &#x16コード
|
●基本構成
実際にXMLで記述されたデータ「XML文書」を見てみましょう。
図4は、Tomcatのルートのデプロイメント記述子(web.xml)です。最初に記述されているのが「XML宣言」、その次に「文書型宣言」、続いてデータ本体が記述されています。
|
図4 XMLの例(Apache Tomcatの/ROOT/WEB-INF/web.xml)
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
</web-app>
|
データの記述では、web-app要素の中に、display-name要素とdescription要素が記述されています。このように、XMLでは要素を入れ子で表現することができ、複雑なデータをツリー構造で階層化して表現できるのです(図5)。
図5 図4のXMLをツリー構造で表現
display-name要素とdescription要素の上位の要素であるweb-app要素を「親(要素)」、それに対して下位の要素であるdisplay-name要素とdescription要素を「子(要素)」と呼びます。この例では登場しませんが、子要素に対してさらに子要素を記述することができます。また、web-app要素のように親要素を持たない要素のことを、そのXML文書の「ルート(要素)」または「文書要素」と呼びます。
さて、要素は入れ子で記述できますが、次のように子要素の終了タグの前に親要素の終了タグを記述することは許されていません。
<tag-a>data1<tag-b>data2
</tag-a></tag-b>
|
●XML宣言
XML宣言は、XML文書がどのようなものなのかを示すものです。XML文書では、XML宣言を持たなくてもよいが、持つことが望ましいとされています。XMLの仕様では、「してもよい(may)」や「しなければならない(must)」といった用語の定義や、XMLプロセッサ(※3)の動きを規定するための「定義」があります。
※3 XMLプロセッサは、XML文書を読み込み、その内容および構造へのアクセスを提供するためのソフトウェアのこと。JavaプログラムからXML文書にアクセスするためのXMLパーサーは、XMLプロセッサの1つです。XML 1.0の勧告では、それらソフトウェアの動作を定義しています。
図6は、XML宣言の一例です。XML宣言は、バージョン宣言、エンコーディング宣言、スタンドアロン文書宣言の順番に記述することになっています。また、バージョン宣言は必須ですが、エンコーディング宣言とスタンドアロン文書宣言は、省略することができます。
図6 XML宣言の例
バージョン宣言は、XMLのバージョンを記述します。XMLのバージョンは、現在1.0(Second Edition)ですが、これも1.0として扱われ、version="1.0"と記述します。
エンコーディング宣言は、XML文書がどんな文字エンコーディングで書かれているのかを記述します。指定できるエンコーディングは、「ISO/IEC 10646」に定義されているもので、日本語であればEUC-JPやISO-2022-JPなどを指定できます。このエンコーディング宣言を省略した場合、XMLプロセッサはUTF-8またはUTF-16として処理します。
スタンドアロン文書宣言は、XML文書の内容に対して影響を与えるほかのファイル(定義)があるかどうかを示すものです。standalone="yes"であればXML文書に影響を与えるファイルがないことを示し、standalone="no"であれば影響を与えるファイルが存在するため、XMLプロセッサがそのファイルを読み込んで処理しなければならないことを示します。なお、この宣言を省略した場合は、standalone="no"とみなされます。
関連リンク
JAVA Developer
定期購読のご案内
バックナンバー販売協力店
|
JAVA Developer 11月号
大特集
DBチューニング大会
特集2 AS徹底解説番外編
[特別企画]
・動的画像生成
・DOMの基本テクニック
・目指せ最強! 最速! CodeRally
・WS-Iの最新事情レポート
|
|