XMLの概要 - データ記述とWebサービス

# はじめに

ここでは情報処理分野でかつて脚光を浴び、いまでは幅広く使われている XML という技術を取り上げます。
XML は、Web ページの記述言語である HTML に名前が似ていますが、
その位置づけは全く異なります。
HTML は Webページ を記述するための「言語」であるのに対して、
XML はそのような「言語」自体をつくり出すための仕組みです。
HTML では Web ページしか記述することができませんが、XML を使うと、
動画の内容、CG のモデルなど、
さまざまものを記述する「言語」を新たにつくり出すことができます。
実際、世の中のさまざまなデータが XML の枠組みを利用して記述する方向へと進んでいます。

X3D - 3Dグラフィックス

- Web3D Consortium YouTube Channel
- SVG (Scalable Vector Graphics) - 線画
- SVG教本 (Mozilla)
SCALABLE VECTOR GRAPHICS (SVG) (W3C)
SVG 1.1 2nd Edition Test Suite using <object> (W3C)
- MathML - 数式
- A Beginner's Guide to MathML (Daniel I. Scully)
- SOAP - HTTPによるオブジェクト間の通信
NewsML - ニュース記事
- ロイター通信、共同通信、毎日新聞などで採用 (内部表現として)。
- フィード (RSS, Atom) - Web サイトの更新情報
Webサイトの更新情報を記述したものをフィードといいます。
これは RSS または Atom という規格に基づいていますが、
このどちらも XML によってつくられた言語です。
- blog (ほぼすべて)
朝日新聞デジタル
Bulknews - RSS (さまざまなニュースサイトのRSSを提供)
スラド (RSS)
- RDF (Resource Description Framework) - メタ情報の記述
メタ情報を記述するための汎用的な規格が RDF です。
Web サイトのメタ情報を記述するという観点で、RSS 1.0 はこの RDF の規格に準拠しています。
iTunes ライブラリのメタデータ
表には出てきませんが、 iTunes Library.xml というファイルに記述されています。
ライブラリ内の楽曲の曲名、アーティスト名、ファイル名、再生回数などなど。
設定ファイル
ソフトウェアの設定ファイルの形式として XML が採用されていることがあります。
- Apache Tomcat ... 3年生の科目で利用
Apache Maven ... Java用ビルドツール

# XMLとは何か

XML は Extensible Markup Language の略で、直訳すると「拡張可能なマークアップ言語」となります。
言語と聞くとJavaやC++といったプログラミング言語を思い浮かべるかもしれませんが、マークアップ言語はプログラミング言語のように処理を記述するものではありません。

## HTMLの復習

みなさんは現在最も広く使用されているマークアップ言語を知っています。
それは、Webページを記述するための言語である HTML (HyperText Markup Language) です。
HTMLでは、見出し、段落、表などの要素(Element)を、
h1～h6、p、tableといったタグ(tag)によって表しました。

<p>ここが段落と決められています。</p>

pがタグ名で、<p>が開始タグ、</p>が終了タグです。
また、タグに囲まれている部分が要素の内容(content)です。
HTML文書において段落要素以外にどのような要素があるのかは、
W3Cという組織が勧告しているHTMLの仕様の中で定められています。

<img src="test.png">

この場合、imgがタグ名、srcが属性名で、"test.png"が属性値と呼ばれます。どの要素にどんな属性/属性値が指定できるか、あるいは指定すべきかは、やはりHTMLの仕様で定められています。

## XMLの例

XMLの枠組みでは、文書の中にどんな要素あって、
それがどんなタグ名で記述されるかは目的に応じて自由に決めることができます。
それが「言語」を作り出すということです。

<段落>これを段落と決めました!</段落>

上記の例では、「段落」というタグ名が使われています。

HTMLで用意されている要素は、文書の構造に関するものです。
以下の例では箇条書きという構造を表していますが、
箇条書きされている項目が何を意味するのかは表現されていません。

<ul>
<li>〒101-8457</li>
<li>東京都千代田区神田錦町2-2</li>
<li>03-5280-XXXX</li>
<li>電大 太郎</li>
</ul>

XMLでは、文書の内容を表現することが可能です。

<個人データ>
<郵便番号>〒101-8457</郵便番号>
<住所>東京都千代田区神田錦町2-2</住所>
<電話番号>03-5280-XXXX</電話番号>
<氏名>電大 太郎</氏名>
</個人データ>

これにより、氏名が何、住所がどこ、といった内容を表現することができ、
名前から個人データを検索したり、名前と電話番号だけを抽出したりといった
データ処理が可能になります。

### メタデータとしての利用

この例ではXML文書が住所録のデータとして独立していますが、他のデータと組み合わせ、
そのデータの内容を記述するためにXML文書を使うこともよくあります。
例えばビデオ映像と組み合わせ、
その映像のどこに誰が映っているかという情報をXML文書に記述することが行われています。
一般に、あるデータがあったとき、そのデータに関する情報のことをメタ情報といいます。
先ほどの例では、XML文書は映像のメタ情報を記述しているメタデータ、ということになります。