[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIIE(HTML入門)第11回

目次 索引
11.1 XML(1)
11.1.1 XMLとは
11.1.2 XMLの使われ方
11.1.3 XMLの文法
11.1.4 木構造と要素
11.1.5 HTMLとの違い
11.1.6 ドキュメントの表示
11.2 演習11
11.3 レポート課題
11.4 参考資料
'  Mozilla Firefox  XML  XMLドキュメント  XMLパーサ  XMLファイル  XMLプロセッサ  親要素  子要素  整形式  妥当な  ドキュメント要素  文書型定義  要素  ルート要素 

11.1 XML(1)

11.1.1 XMLとは

今、次のような天気予報のホームページについて考えます。

2004年7月3日
東京 晴れ
大阪 雨

スタイルシートを使いますと、意味データと表示データが分離できます。 ここでは、都市の class 属性の値を"city"、天気の class 属性の値を"weather"などとします。

ex11a.html
<html>
<head>
<title>Weather forecast</title>
<style type="text/css">
<!--
body.weather_forecast {background-color: white}
div.date {background-color: aqua}
div.forecast {background-color: yellow}
span.city {color: red}
span.weather {color: blue}
-->
</style>
</head>
<body class="weather_forecast">
  <div class="date">2004年7月3日</div>
  <div class="forecast">
    <span class="city">東京</span>
    <span class="weather">晴れ</span>
  </div>
  <div class="forecast">
    <span class="city">大阪</span>
    <span class="weather">雨</span>
  </div>
</body>
</html>

意味データと表示データの分離はできましたが、HTMLでは、意味データだけにすることはできません。 たとえ class 属性を使って意味を表しても、 <div> タグも <span> タグも表示データだからです。

意味データだけにするために、次のように書いてみます。

ex11b.xml
<weather_forecast>
  <date>2004年7月3日</date>
  <forecast>
    <city>東京</city>
    <weather>晴れ</weather>
  </forecast>
  <forecast>
    <city>大阪</city>
    <weather>雨</weather>
  </forecast>
</weather_forecast>

これなら、表示データはありませんし、意味もタグによって表されます。 しかし、これはHTMLではありません。 実は、これがXMLなのです。

XML とはeXtensible Markup Languageの略です。 直訳すると、拡張可能なマークアップ言語です。 拡張可能とは、自分でタグが定義できるという意味です。 この場合では、自分で <city> タグや <weather> タグを定義しています。

HTMLのタグは、多かれ少なかれ表示データを表します。 例えば、 <div> タグならば、前後に改行が入ります。 一方、XMLのタグは、意味データを表しますが、表示データは表しません。 例えば、 <city> タグならば、都市という意味を表しますが、これをどう表示するかは決まっていません。 XMLは、意味データを表すための言語なのです。

XMLで書かれたドキュメントを XMLドキュメント ( XML document )と呼びます。 XMLドキュメントが格納されたファイルを XMLファイル ( XML file )と呼びます。 XMLファイルのファイル名は、拡張子を〜.xmlとする場合が多いです。

11.1.2 XMLの使われ方

HTMLドキュメントは、通常、ネットワーク経由で転送され、ウェブ・ブラウザで表示されるという使われ方をします。 これに対して、XMLドキュメントは、ネットワーク経由で転送される点は同じですが、直接表示されるという使われ方はしません。 XMLドキュメントは、ドキュメント処理プログラムに読み込まれ、データとして処理されるという使われ方をします。 このようなドキュメント処理プログラムは、 XMLパーサ ( XML parser )、または、 XMLプロセッサ ( XML processor )と呼ばれます。 ここで、もう一度、XMLが表示データではなく、意味データを表す言語であることを思い出してください。

11.1.3 XMLの文法

HTMLには、実は文法があるのですが、HTMLドキュメントに多少の文法違反があっても、ウェブ・ブラウザが適当に解釈して表示してくれます。 人間が読むものだから、少しぐらい適当でも大丈夫というわけです。 しかし、XMLではこうはいきません。 プログラムが読むものだから、完全に文法に従わなければならないのです。

XMLの文法は二段階で成り立ちます。 まず、XMLドキュメントは整形式でなければなりません。 その上で、XMLドキュメントは妥当なものでなければなりません。 XMLドキュメントが 整形式 ( well-formed )であるとは、例えば、開始タグは必ず終了タグと対応するといった、意味に無関係な文法に従っていることです。 これに対して、XMLドキュメントが 妥当な ( valid )ものであるとは、例えば、 <forecast> タグは <city> タグと <weather> タグから構成されるといった、意味に関係のある文法に従っていることです。

XMLドキュメントが妥当なものかどうかは、そのXMLドキュメントがどの分野で作成されたかに依存します。 もし人口予想の分野でしたら、 <forecast> タグは <city> タグと <population> タグから構成されるという文法になるでしょう。 XMLドキュメントが妥当なものかどうかを決める文法は、 文書型定義 ( document type definition )と呼ばれるドキュメントで表現できます。 天気予報の文書型定義では、 <forecast> タグは <city> タグと <weather> タグから構成される。 人口予想の文書型定義では、 <forecast> タグは <city> タグと <population> タグから構成される。 という文法になるのです。

11.1.4 木構造と要素

XMLでは、意味データの単位を 要素 ( element )と呼びます。 天気予報の例ですと、 forecast 要素は city 要素と weather 要素から構成されるということです。

XMLドキュメントの要素どうしの関係は木構造で表されます。 天気予報のXMLドキュメントについては次のようになります。

                       |
                weather_forecast
                       |
     +-----------------+-----------------------+
     |                 |                       |
    date            forecast                forecast
     |                 |                       |
     |           +-----+-----+           +-----+-----+
     |           |           |           |           |
     |          city      weather       city      weather
     |           |           |           |           |
"2004年7月3日"  "東京"      "晴れ"       "大阪"       "雨"

木構造において、直接上位の要素を 親要素 ( parent element )と呼び、直接下位の要素を 子要素 ( child element )と呼びます。 例えば、 forecast 要素は city 要素と weather 要素の親要素である。 city 要素と weather 要素は forecast 要素の子要素である。 などと言えます。

木構造の最上位の要素は、 ルート要素 ( root element )または ドキュメント要素 ( document element )と呼ばれます。 この場合は、 weather_forecast 要素がルート要素になります。

XMLドキュメントが整形式であるためには、ルート要素は一つでなければなりません。 つまり

<greeting>Good afternoon!</greeting>

は正しいですが、

Good afternoon!

や

<greeting>Good morning!</greeting>
<greeting>Good afternoon!</greeting>

は間違っています。

11.1.5 HTMLとの違い

XMLでは、HTMLと同じように、開始タグ < elt > と終了タグ </ elt > で囲まれた部分が elt 要素を表します。 タグがオーバーラップしてはいけない点も同様です。 つまり、 <a><b>123</a></b> ではだめで、 <a><b>123</b></a> ならOKです。 HTMLとの違いは、XMLでは要素の名前の大文字小文字が区別されることです。 また、HTMLでは終了タグのないタグがありますが、XMLでそのようなタグは < elt /> という書き方をします。

XMLでも、HTMLと同じように属性が使えます。 ただし、属性の形式は、値をダブルクオートで囲む att =" value " か、値をシングルクオートで囲む att =' value ' です。 HTMLでの <option selected> 〜 </option> のような値のない属性は、XMLでは使えません。

特殊文字の書き換えもHTMLと同じですが、XMLではシングルクオートも書き換えます。

表 11.1  特殊文字の書き換え
特殊文字 書き換え 覚え方
< &lt; Less Than
> &gt; Greater Than
& &amp; AMPersand
" &quot; QUOTe
' &apos; APOStrophe

コメントについては、XMLとHTMLは同じです。 <!-- 〜 --> で囲まれた部分がコメントになります。

11.1.6 ドキュメントの表示

HTMLドキュメントと違い、XMLドキュメントは表示方法を直接指示するものではありません。 ウェブ・ブラウザでXMLファイルを開いても、HTMLでないタグが無視されるだけです。 しかし、最近のウェブ・ブラウザには、XMLドキュメントの木構造を表示する機能があります。 これを利用しますと、XMLドキュメントの構造が確認できます。

情報処理センターで利用できるウェブ・ブラウザの中では、 Mozilla Firefox が木構造の表示機能を持ちます。 Mozilla Firefoxを起動するには、Finderを開き、アプリケーション・ボタンをクリックし、Firefoxアイコンをダブル・クリックします。 木構造の表示は、SafariやInternet Explorerではうまくいきません。

例えば、以下のXMLドキュメント

ex11b.xml
<weather_forecast>
  <date>2004年7月3日</date>
  <forecast>
    <city>東京</city>
    <weather>晴れ</weather>
  </forecast>
  <forecast>
    <city>大阪</city>
    <weather>雨</weather>
  </forecast>
</weather_forecast>

このXMLファイルをMozilla Firefoxで開きますと、次のように表示されます。

- <weather_forecast>
    <date>2004年7月3日</date>
  - <forecast>
      <city>東京</city>
      <weather>晴れ</weather>
    </forecast>
  - <forecast>
      <city>大阪</city>
      <weather>雨</weather>
    </forecast>
  </weather_forecast>

左端の記号"-"をクリックしますと、"-"が"+"に変わり、その要素が省略表示になります。 元に戻すには、記号"+"をクリックします。

この場合、2番目の <forecast> タグにある"-"をクリックしますと、

- <weather_forecast>
    <date>2004年7月3日</date>
  - <forecast>
      <city>東京</city>
      <weather>晴れ</weather>
    </forecast>
  + <forecast></forecast>
  </weather_forecast>

となり、 <weather_forecast> タグにある"-"をクリックしますと、

+ <weather_forecast></weather_forecast>

となります。

なお、Mozilla Firefoxは、開いたXMLファイルが整形式でないとエラー・メッセージを表示します。 したがって、Mozilla Firefoxは、XMLドキュメントが整形式であることの確認にも使えます。


11.2 演習11

以下は、買い物リストを表示するHTMLドキュメントです。 このドキュメントから表示データを取り除き、意味データだけのXMLドキュメントを作成してください。 HTMLのタグをすべて取り除き、意味を表すタグに入れ換えます。 作成したXMLファイルは、Mozilla Firefoxで開くとエラーの有無が確認できます。

<html>
<head>
<title>Shopping</title>
<style type="text/css">
<!--
body.shopping {background-color: white}
div.item {background-color: yellow}
div.total {background-color: aqua}
span.name {color: blue}
span.price {color: purple}
span.quantity {color: green}
span.unit_price {color: red}
-->
</style>
</head>
<body class="shopping">
  <div class="item">
    <span class="name">缶ジュース</span>
    <span class="unit_price">120</span>
    <span class="quantity">3</span>
    <span class="price">360</span>
  </div>
  <div class="item">
    <span class="name">ペットボトル</span>
    <span class="unit_price">150</span>
    <span class="quantity">1</span>
    <span class="price">150</span>
  </div>
  <div class="total">510</div>
</body>
</html>

(今回は、余力のある人の演習問題はありません。)


11.3 レポート課題

今日の演習11に従ってXMLドキュメントを作成し、そのURLをkonishi@twcu.ac.jpあてにメールで報告してください。 メールには、学生番号、氏名、科目名、授業の日付け(7/2)を明記してください。


11.4 参考資料

XMLについて本格的に勉強したければ、以下のホームページを参考にするとよいでしょう。

XML 1.0 仕様書(英語)
http://www.w3.org/TR/REC-xml/
XML 仕様書の日本語訳
http://www.w3.org/XML/Core/Translations

このホームページは、W3Cの正規のドキュメントとその(個人的な)日本語訳です。


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2004年7月2日更新
konishi@twcu.ac.jp
Copyright (C) 2004 Zenjiro Konishi. All rights reserved.