|
ここだけおさえればOK ツボ中のツボ
特集
あらゆる場所で目にする3文字のアルファベット
XMLとは何か?
文:のりぞう(ライター)
イラスト:とみたまきこ
XMLってどんなもの?
これだけは覚えておこう
・マークアップ言語を用いて作成した文書は標準的なテキストファイル
・XMLは拡張可能な汎用のデータ記述言語
・XMLはW3Cによって仕様が勧告された標準規格
ここ数年「XML」という単語を目にする機会が増えてきた。2007年初頭にリリース予定の「2007 Microsoft Office」では、標準のファイルフォーマットにXMLを採用するという。このニュースによって、一般のPCユーザーも「XML」に関心を寄せていることだろう。
そこで今回はXMLとはどんなものなのか、XMLがもたらす恩恵とは何かといった基礎知識を学ぶことにしよう。
XMLとは「eXtensible Markup Language」の略で、日本語では「拡張可能なマークアップ言語」などと訳される。これだけではなんのことやらわからないのでマークアップ言語の意味から説明する。
マークアップ言語というのは、文書の中に「タグ」と呼ばれる特定の文字列を埋め込んで論理構造や文字装飾情報などを表現するための言語だ。有名なマークアップ言語には、HTML(HyperText Markup Language)、TeX、SGML(Standard Generalized Markup Language)といったものがある。HTMLやSGMLでは不等号(“<”と“>”)で囲んだ文字列をタグとして用いる。マークアップ言語を用いて作成した文書は標準的なテキストファイルなので、テキストエディタで閲覧・編集をすることができ、異なるプラットフォーム間でもデータの交換をしやすいというメリットがある。
例えば、次のHTML文書はタイトル、見出し、段落といった文書の構造、文書を記述している文字コードといった情報を含んでいる。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja-JP">
<head>
<meta http-equiv="Content-Type" content="text/html; Shift_JIS">
<title>HTML文書の例</title>
</head>
<body>
<h1>HTML文書のタグ</h1>
<p>HTMLでは文書にタグを埋め込んで文書構造を表現する。</p>
</body>
</html>
|
|
リスト1●HTML文書の例
|
この例では<html lang="ja-JP">~</html>で囲まれた範囲が文書の内容だ。また、<title>と</title>で囲まれた「HTML文書の例」が文書のタイトルであり、<p>と</p>で囲まれた部分が本文の段落になる。このように、テキストファイルに文書の構造などの情報を付加するのがマークアップ言語の役割だ。
XMLもHTMLやSGMLと同様に不等号で囲んだ文字列をタグとする。簡単なXML文書の例を見てみよう。
<?xml version="1.0" encoding="utf-8" ?>
<document>
<header>
<title>XML文書の例</title>
</header>
<body>
<headline1>XML文書のタグ</headline1>
<paragraph>XML文書もまたタグを埋め込んで構造を表現する。</paragraph>
</body>
</document>
|
|
リスト2●XML文書の例
|
これは先ほどのHTML文書とほぼ同じ内容のXML文書だ。よく似ていることが分かるだろう。実はHTMLとXMLはどちらもSGMLから派生したもので、兄弟のような関係にある。では、HTMLとXMLにはどのような違いがあるのだろうか。
HTMLはWebページを記述するために作られたSGMLのサブセットで、使用可能なタグの種類と意味、タグでの囲み方があらかじめ決められている。これに対してXMLは、タグの付け方は決められているものの種類や意味は決められておらず、ユーザーが自由に定義することが可能だ。これが「拡張可能な」といわれるゆえんである。
XMLはWebに関連する技術の標準化を進める
W3C(World Wide Web Consortium)
によって仕様が規定されており、現在では
XML 1.0
、
XML 1.1
の2種類のバージョンが勧告されている。
ところで、XML文書によってデータのやりとりをする際にはユーザーがどのようにタグを定義したのかが分からないと困る。タグの意味やタグ同士の関連などXML文書の取り得る構造をスキーマといい、「スキーマ言語」という言語を用いて別途定義することができる。スキーマ言語には、DTD(Document Type Definition)、
XML Schema
、
RELAX NG
などがある。
DTDはSGMLに由来するもので、XMLとは異なる文法構造をとることなどから使い勝手がよくない。これらの問題を解消すべくW3Cが開発したスキーマ言語がXML Schemaだ。さらに、XML Schemaには問題があるとしてW3Cのメンバーだった村田真氏とJames Clark氏がそれぞれ独自に
RELAX
と
TREX
というスキーマ言語をそれぞれ独自に開発した。両者がRELAXとTREXをもとに発展させたのがRELAX NGだ。
<?xml version="1.0" encoding="utf-8" ?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="test.xsd">
<header>
<title>XML文書の例</title>
</header>
<body>
<headline1>XML文書のタグ</headline1>
<paragraph>XML文書もまたタグを埋め込んで構造を表現する。</paragraph>
</body>
</document>
|
|
リスト3●XML Schemaでスキーマを指定したXML文書の例(test.xml)
2~3行目でtest.xsdというファイルをXML Schemaとして読み込むように指定している。
|
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="document">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="header">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="title" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="body">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="headline1" type="xsd:string" />
<xsd:element name="paragraph" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
|
|
リスト4●test.xmlで使うタグの定義内容を記述したXML Schema(test.xsd)
タグの親子関係、許される出現順、属性のデータ型を定義している。
|
以上のような仕組みによって、XMLはWebページの記述に特化したHTMLとは違い、汎用のデータ記述言語として用いることができる。
XML 1.0は1998年2月に勧告されたものであり、XML自体は決して新しい規格ではない。しかし、Webを中心としたインターネットの利用が一般的になるとともにソフトウェアをはじめとする環境の整備が進み、XMLは文書やデータ交換時のデータ形式として使用されることが多くなっている。
■関連リンク
W3CによるXML 1.0仕様勧告
Extensible Markup Language(XML)1.0(Third Edition)
http://www.w3.org/TR/REC-xml/
W3CによるXML 1.1仕様勧告
Extensible Markup Language(XML)1.1
http://www.w3.org/TR/xml11/
W3CによるXML Schema仕様勧告
XML Schema Part 0: Primer Second Edition
http://www.w3.org/TR/xmlschema-0/
RELAX NG
http://relaxng.org/
W3C(World Wide Web Consortium)
http://www.w3c.org/
|