XML文書とは
XML文書はタグを自由に決められるマークアップ言語であり,メタ言語である.ここではXML文書基本について記述する.
XMLはマークアップ言語の一つである.マークアップ言語には
- TEX
- SGML
- HTML
XML文書はデータを表すための仕様である.そしてXMLファイルはHTMLファイルなどと同様,テキストエディタで作れる.以下がサンプルである.
<?xml version="1.0" encoding="EUC_JP" ?> <linux> <dist>Debian</dist> <dist>Red Hat</dist> </linux>上の例で注意点は以下の通り.
- 大文字と小文字を区別する.
- <と?xmlの間は開けない.?と>の間も開けない.
整形式文書とはXMLの文法規則を守った文書のことである.整形式文書は以下の二つからなる.
- XML宣言(XML declaration)
- 本体部分
<? version="1.0" encoding="EUC_JP" ?>ちなみにコメントはHTMLと同様で以下の通り.
<!-- コメント.ここではハイフンを二つ以上続けて書いてはいけない. -->本体部分はさらに以下の二つの単位にわけられる.
- 要素
- タグを堺にしたデータの単位.
- 属性
- 要素につける付属データ.
要素はタグを堺にしたデータの単位である.タグで囲まれた部分は「要素の内容」という.タグの<と>で囲まれた部分は要素名という.要素は以下のように構成される.
<要素名>内容</要素名>XMLでは要素名を自由に決められる.そこが嬉しいところである.ただし少し制限がある.
- 数字で始まってはいけない.(2文字目以降は可).
- 空白を含んではいけない.
<?xml version="1.0" encoding="EUC_JP" ?> <linux> <dist>Debian</dist> <dist>Red Hat</dist> </linux>上の例では本体部分に一番外側にある要素(<linux>から始まり</linux>で終る要素)が一つだけある.これをルート要素という.整形式文書ではこのルート要素が必ず一つだけなければならない.逆にルート要素以外の要素はかならずルート要素の中にある.
さらにタグにはいくつかのきまりがある.
- 開始タグと終了タグは必ず対になる.
- タグは入れ子構造にできるが開始タグと終了タグを交差させては行かない.
例: <a>ダメ<b></a>な例</b>
<?xml version="1.0" encoding="EUC_JP" ?> <linux> <dist>Debian</dist> <dist>Red Hat</dist> </linux>上の例のように,タグは入れ子にすることができる.つまり,要素<linux>と</linux>の内容に要素<dist>Debian</dist>や<dist>Red Hat</dist>がある.こんな感じで,要素の内容には以下のものが入る.
- 要素.
- 文字列.
- 何も入らないこともある(空要素).
要素には属性を付けることができる.以下に例を示す.
<?xml version="1.0" encoding="EUC_JP" ?> <linux> <dist pkg="dpkg">Debian</dist> <dist pkg="rpm">Red Hat</dist> </linux>このように属性はタグの中に書く.上の例でpkgが属性名で,"e;に囲まれたdpkgやrpmが属性値である.また,この例では一つのタグに一つの属性しかないが,複数の属性をつけることもできる.
実態参照とは特殊な記号などのための書き方である.例えば,要素の内容に>と書きたいときは,>と書く.このHTMLでもこの書き方をしている.セミコロンを忘れないように注意.XMLでは記号や文字列のことを実体(entity)と呼ぶ.XMLでは>などの実態を>などのあらかじめ決めておいた名前(実体名,先の例ではgt)で表現する.そして実体参照したいときには,&と;で挟む.
&実態名;
なお,実体名は自分で定義することもできる.
XMLでは文字コードを使って文字を指定することができる.これは実体参照を文字に適応させたものである.例えば,
™ ™ © ©などがそうである.文字参照は実体参照の形式どうり&と;で囲まれていることに注意.また,上の例では文字コードを10進数で指定したが,16進数でも指定できる.それには先の#を#xにして,10進数を16進数にする.
™ ™ © ©
で,このHTMLファイルを書いていてもそうなのだが,>を>なんて書くのは面倒臭い.XMLではこんなときCDATAセクションが使える.書式と効果は以下の通り.
<![CDATA[ ここに書いたものはそのまま表示される. ]]>試してみたところ,HTMLではやはりダメらしい.

