XMLの基本用語

2001年4月17日
アンテナハウス株式会社


XMLの意味

XMLとは情報を表現するための新しい方法です。XMLでは、これまでバイナリー形式というプログラムでしか処理できない形式で表現していた情報を、テキスト形式で表現します。

テキスト形式は、人間でも理解できる文字で情報を表現しますので、情報を処理するプログラムと情報自身を独立にすることができます。バイナリ形式の情報は、専用のプログラムで処理するしかなかったのですが、テキストになることで情報の共有や柔軟な加工が可能になります。

XMLの基本仕様と応用仕様

XMLの応用例

XML文書の構造

XML文書は物理的には実体という記憶単位(ファイルなど)から構成されます。XML文書には必ず文書実体という実体が一つあり、ほかの実体は文書実体からたどることができます。

正しいXML文書には、「Well Formed」(整形式)XML文書と「Valid」(妥当な)XML文書の2種類があります。

(例)

 <?xml version="1.0">
 <!DOCTYLE 挨拶 SYSTEM "hello.dtd">
 <挨拶>
   <朝の挨拶>
   おはようございます。
   </朝の挨拶>
   <昼の挨拶>
   こんにちは。
   </昼の挨拶>
   <夜の挨拶>
   こんばんは。
   </夜の挨拶>
 </挨拶>
上の文書では、<挨拶>から</挨拶>の部分が、文書インスタンスになります。

WellFormedなXML

大雑把に言って次の3つの条件を満たすものがWell Formed(整形式)XML文書です。

  1. ルート要素がひとつで、他の要素はルート要素の子孫となる(ルート要素は他の要素に含まれない)。
  2. 開始タグと終了タグがセットになっている。HTMLのように終了タグを省略することはできない。
  3. ルート要素に含まれる要素は、互いに親子または兄弟の関係になっている。ひとつの要素の開始タグと終了タグが入れ違いにならない。

例(Well formed)

<root>
 <section>セクション1
  <paragraph>段落1-1</paragraph>
  <paragraph>段落1-2</paragraph>
 </section>
 <section>セクション2
  <paragraph>段落2-1</paragraph>
  <paragraph>段落2-2</paragraph>
 </section>
</root>

正しくない例(Not well formed)

<root>
 <section>セクション1
  <paragraph>段落1-1</paragraph>
  <paragraph>段落1-2</paragraph>
  </section>
 <section>セクション2
  <paragraph>段落2-1</paragraph>
  <paragraph>段落2-2</section></paragraph>
</root>
(正しくない理由)
<paragraph>の終了タグの前に<section> の終了タグがあります。

ValidなXML

Wellformedであって、さらに、「従うべき型」が指定され、その型にあてはまっているのがValidなXML文書です。

  1. DTD(Document Type Definition)というもので文書の型(構造)を定義します。
  2. 文書の型には、名前をつけます。
  3. 文書実体の先頭に文書型宣言「<!DOCTYPE xxxx ... >」を配置し、xxxxのところでXML文書が「従うべき型名」を指定します。
  4. 妥当性検証パーサーで、DTDに従って作られているかをチェックします。

注)最近は、型(構造)定義に、「RELAX」や「XMLSchema」が提案されています。

XMLパーサーとは

実体(ファイルなど)を読んでXMLの仕様に照らして文法的に正しいかどうかを確認し、アプリケーションに渡す機能をもつものがパーサーです。

パーサーではWellformed(整形式)基準に適合しているかだけを検証する機能をもつWellformed(整形式)パーサーと、Valid(妥当性)基準に当てはまるかを検証する機能をもつValidity(妥当性)検証パーサーがあります。

妥当性検証パーサーは、まず、文書型宣言で指定したDTDを読んで検証します。さらにXML文書インスタンスがそのDTDに従っているか否かを検証します。

基本用語

テキストとバイナリー
コンピュータでは文字に番号をつけて扱いますが、データとして文字と対応する番号を並べたものがテキスト形式です。テキストで表現したデータは人間が読むこともできますし、もちろん、プログラムで処理することもできます。それに対して、バイナリー形式では0,1の並びで情報を表現します。バイナリー形式のデータは対応するプログラムで処理しないと人間が理解できるようになりません。
文字符号化方式
番号付けした文字の集まりを「符号化文字集合」と言います。さらに、符号化文字集合をひとつまたは複数組み合わせて番号付けの枠組みを決めたものが文字符号化方式です。例えば、Shift_JISは、JIS X0201(1バイトのアルファベット文字集合とカタナカ文字集合)とJIS X0208(2バイトのアルファベット、かな、記号、漢字)を組み合わせる符号化方式です。
UTF-8
Unicodeの符号化文字集合を、アルファベットについては1バイト、漢字等については最大4バイトまでの可変長で表す符号化方式です。0から127番まではASCIIコードと同じです。
UTF-16
Unicodeの符号化文字集合を、2バイト固定長で表す符号化方式です。但し、2バイトでは6万4千字種が限界なので、一部で2つの2バイトコードを組み合わせて1文字を表すようにしたサロゲート・ペアというコードもあります。

改訂履歴

改訂日 改訂内容
2001年4月17日 XMLの意味と基本仕様と応用仕様の区別について追記。
2000年9月21日 XML文書の構造の項目を追加
2000年6月26日 初版設定