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

コンピュータ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.