SGML,XML,HTML

東京女子大学のトップページ   情報処理センターのページ   東京女子大学の Gmail のページ   東京女子大学の図書館のページ   浅川のホームページ   コンピュータ2Dのページ

XML

XML(eXtensible Markup Language)はSGMLのサブセットであり, 1998年2月に発表されたインターネット上で扱うデータを記述するための データフォーマットである。

近年,SGMLの応用言語であるHTMLを利用したWebが普及し,文書閲覧のみならず, 電子商取引という形で利用されるにいたった。しかし同時にHTMLの限界が認識される ようになった。すなわち,HTMLではタグ名が固定されており,ユーザが自由に タグを拡張して使用することはできない。このようなことからSGMLをWeb上で使 えるようにしようという議論が始まった。

この授業でHTMLを学習した際に,HTMLを書く場合には,テンプレートフィアルをコピーして 使うように指示した。このテンプレートファイルの先頭部分を見ると

<?xml version="1.0" encoding="iso-2022-jp"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x
html1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">

などと書いてある。つまりこのテンプレートファイルの一行目ではこの文書がXMLの規格 に従うことを宣言していたのである。

XMLの長所

SGMLは特定のソフトウェアに依存しないデータ形式である。 SGMLとHTMLから多く点を引き継いでいる。

HTMLからは

一方SGMLからは次のような長所を引き継いでいる

拡張可能と意味情報

先にも述べたとおりXMLはHTMLと同じくSGMLの流れをくむデータ記述言語である。 XMLはHTMLと比較すると、「拡張可能」であり、「意味情報」を含めるこ とができる。例えば以下のようなXMLファイルがあるとする

<?xml version = "1.0" encoding = "iso-2022-jp"?>
<documentinfo type = "XML">
<title>XMLの簡単な解説</title>
<doctype>メール</doctype>
<author>浅川伸一</author>
</documentinfo>

HTMLではタグ名は決められたものしか用いることはできない。HTML文書を作成 するものはその内容をブラウザに表示させることによって確認し,さらにこの 授業ではOperaを用いて文法のチェックを行っていた。つまり,HTMLのタグ名は表 現情報を表しており、タグによってマークアップされている情報の意味は人間 が実際にブラウザで見て初めて確認できるのである。

一方、同じ情報をXMLでマークアップすることにすると,XMLではタグ名を自由 に決めることができるため,目的に応じたタグを定義して使用することができ るようになる。たとえば,<doctype>メール</doctype> のような場合"メール"という文字列の意味をタグ名が与えている。 つまり"メール"という情報についての意味情報をタグ名が与えているのである。 この行を見れば人間は"メール"という情報が文書のタイプを表すものであることを, タグ名から知ることができるのである。

このような場合「タグが意味情報をもつ」と考える。このようにXMLを使用 してマークアップすることで,タグ名をHTMLのように表現情報として利用するので はなく,意味情報として利用することになる。

この違いはプログラムからデータを処理する際に大きな違いとなって現れる。 データをXMLでマークアップしておけば、個々の情報に意味情報のタグがついて いるのでプログラムから正確にデータ処理をすることが可能になるのである。

文書における「内容」「構造」「体裁」の分離

文書を構成する「内容」「構造」「体裁」という3つの要素は,従来の紙媒体 ではひとつとなって決定されている。XML ではこれら3つの要素を分離して扱う。 「内容」はXML文書内でマークアップされるが、そのXML文書の「構造」 は DTD(Document Type Definition)と呼ばれる構造定義体によって定義する。 また,XML文書に与える「体裁」はスタイルシートにより記述する。DTDの概念は SGMLから引き継がれたものであり,スタイルシートの概念はHTMLから引き継がれた。

−XML宣言−

<?xml version = "1.0" encoding = "iso2022-jp"?>

−XMLインスタンス−

<研究者 登録番号 = "3661">
  <名前>浅川伸一</名前>
  <連絡先>
	<郵便番号>167-8585</郵便番号>
	<住所>東京都杉並区善福寺2-6-1東京女子大学現代教養学部</住所>
     <電話番号>03-5382-6746</電話番号>
         <FAX>03-5382-6709</FAX>
    </連絡先>
    <URL>http://www.cis.twcu.ac.jp/~asakawa/</URL>
</研究者>

XMLインスタンスとは実際の内容にタグが付けられている部分,つまりXML文書 の本体のことである。この部分は「要素( element)」と「属性( attribute )」からなっている。すなわち

開始タグ  内容    終了タグ
<郵便番号>167-8585</郵便番号>

となる。このあたりはHTMLとよく似ている。

上の例では「連絡先」という要素の中に「郵便番号」「住所」「電話番号」 「FAX」という要素が含められている。このとき、「連絡先」を「親要素」、 「郵便番号」「住所」「電話番号」「FAX」を「子要素」と呼ぶ。ちょうどHTMLが <body>要素の中に,<p>要素や<ul>要素を子どもの要素 として含んでいたことと同様である。XML文書は(HTML文書と同じように), 親要素から子要素、そのまた子要素、というように要素を階層 的に作り上げることで成り立っている。ある要素の開始タグと終了タグの対の 中に、子要素として別の要素の開始タグと終了タグを「入れ子」にして書くこ とによって階層関係を作る。

タグの対応が取れている場合でも、親要素と子要素が入れ子構造を形成してい ないような次のようなタグ付けは許されないのもHTMLと同じである。

要素には、その内容に子要素も文字列ももたない「空要素」と呼ばれる要素が ある。その場合には,<要素名 />としてタグの終わりにスラッシュ(/) が必要である。これはHTMLのimg要素やbr要素と同じである。

演習

UNIX には findというコマンドラインユーティリティがある。 使い方は,

find 検索するパス名 フォーマット

となる。例えば,自分のホームディレクトリ直下にある Library というディレクトリ から xml という拡張子のついたファイルを探したければ

find ~/Library -name '*xml'

とする。'*xml' とシングルクォートで囲むのはシェルがこの名前を展開してしまうのを 避けるためである。おそらくたくさんのファイルがみつかるであろう。 それぞれを順に眺めたければ,lessコマンドにパイプでつなげればよい。

find ~/Library -name '*xml' | less

いくつ xml ファイルがあるかを調べるには wc コマンドをつかう。

find ~/Library -name '*xml' | wc -l

findコマンドでみつかった .xml ファイルのいくつかを実際に cat, less または lv してみよ。どのような情報が書かれているか。

情報処理技術者試験の過去の問題集より

タグを使って文書の論理構造や属性を記述する方法を定めた国際規格であって, 電子的な文書の管理や交換を容易に行うための文書記述言語はどれか。

XML の特徴のうち,最も適切なものはどれか。

XML 文書を構成する最小単位である要素の定義方法に関する記述のうち、適切なものはどれか。

XML に関する記述のうち,適切なものはどれか。

XML に関する記述として,適切なものはどれか。