Web教材一覧ハードウエアとソフトウェアマークアップ言語

XML(eXtensible Markup Language)

キーワード

XML、XML宣言、DTD、妥当なXML文書、整形式のXML文書、XMLパーサ、SAX、XML Schema、XSL、XSLT、XLink、XPointer、CSV、JSON、YAML


XML(eXtended Markup Language)

XML(eXtended Markup Language)は、マークアップ言語です。XMLで記述された文書をXML文書といいます。XML文書は、人間が読んでもわかりやすいし、コンピュータ処理にも適した形式であり主にデータ交換やデータベースに使われています。

XMLの記述例

XMLの特徴を理解するために、簡単なXML文書を掲げます。

全体の構成
XML文書は、XML宣言、DTD(省略可)、XML本体の3部分で構成されます。
XML宣言
<?xml ~ ?>:この文書がXML文書であることを示します。必ず先頭に記述します。
version="1.0":XMLの文法は進化しています。1.0版に準拠していることを示します。
encoding="UTF-8":エンコーディング属性。この文書が UTF-8 の文字コードで記述していることを示します。
多様な文字コードが使えるのですが、XML文書を扱う多くのシステムが UTF-8 を標準としているので、通常は UTF-8 を使います。
DTD(Document Type Definition)
「<!DOCTYPE ~」でDTDを指定します。
DTDは、XML本体のタグの構造(スキーマ)を記述したものです。
上の記述例から推察できると思いますが、
  注文リストには、発注者, 発注日, 注文からなるいくつかの組があり、
  その注文はさらに商品名, 商品コード, 個数からなるいくつかの組がある
ことを示しています。このように要素の中に子要素を持つことができます。
(!ELEMENT や #PCDATA などの説明は省略します。)
XML本体は、この規則に従って記述されなければなりません。
規則に従っていることを前提として、このDTDは省略できます。
DTDが指定された文書を妥当な文書、省略された文書を整形式文書といいます(後述)。
XML本体とタグ
XML本体はDTDに従ったタグの構造で記述します。
XMLもHTMLと同様に、タグにより文書構造を示すのですが、HTMLのタグとはかなり異なります。
HTMLでは、<h1> や <li> のように標準タグしか使えませんが、XMLでは標準タグがなく、利用者がDTDで設定した独自のタグを使います。
タグの機能は、章や節、箇条書きなどの文書構造を示すのではなく、<商品名>HALパソコン</商品名> や <個数>3</個数> のようにタグで囲まれた要素が何かを示します。

妥当なXML文書(Valid XML Document)

DTDあるいはXML Schema(後述)があり、それに合致していることが検証されているXML文書です。
 上の例では省略していますが、発注者や発注日は先頭に1回だけ必ず記述する、商品コードがあれば商品名は省略できる、個数は100以下の正整数であるなどの定義ができます。商取引など正確さを重視する文書では妥当なXML文書であることが求められます。業界でDTDが標準化しており、各文書では、それに準拠していることだけを記述すればよいようになっています。

整形式のXML文書(Well-Formed XML Document)

DTDの記述がないXML文書です。XML本体が、表面的な形式がXMLの文法に合致しているだけのXML文書です。正確性をあまり重視しない文書では、文書作成を簡単にするために、整形式文書にするのが通常です。


XML関連の言語・機能

HTML文書はHTMLブラウザでWebページとして表示することだけを想定しています。それを加工するのはJavascriptなどで処理内容をプログラムする必要がありました。
 XML文書は表示や加工に関する情報をもっていません。XML文書は広い分野での情報交換に用いられており、XML文書を取扱うために,多様な言語や機能があります。

XMLパーサ
XMLが文法的に正しいかどうか(DTDやXML Schemaに合致しているかなど)をチェックして,正しければ,アプリケーションプログラムが利用しやすい形に変換するソフトウェアです。
一般にアプリケーションプログラムはXML文書を直接にアクセスするのではなく,XMLパーサを介してアクセスします。
SAX( Simple API for XML)
アプリケーションを作成するプログラミング言語からXML文書をタグ構造により解析したり編集したりする機能にDOMがあります。
SAXは、その機能をXMLパーサの標準APIの一つとして組み込んだものです。DOMと比較して軽量でスループットがよい特徴があります。
XML Schema
XMLのスキーマを記述するのにDTDがありますが、さらに高度なスキーマを定義するための言語です。XMLパーサに組み込まれています。
XSL(eXtensible Style Language)
CSSはXMLにも使えますがHTMLを対象にしたものなので、XMLに適していません。
XSLは、XML文書を整形して画面に表示します。
  XSLT:XML文書をHTMLなどに変換
  XSL-FO:CSSに似た方法
の二つがありますが、広く使われているのはXSLTです。
XSLT(XSL Transformations)
XSLの部分機能で,XML文書を読み込みタグに応じて編集をして,他のXML文書にしたり,HTML文書にしてブラウザに表示したりする機能です。
XLinkは,XML文書でのリンク機能を専用言語にしたものです。HTMLのリンクりも大幅に機能が強化されています。
・リンク自体を、リンク元やリンク先の文書と分離できる
・XPointerにより、アンカーのない部分へもリンクが可能
・単方向リンクだけでなく双方向リンクもできる
・複数のXML文書を埋め込んで一つの仮想XML文書にできる

XML類似言語・データ形式

OpenDocument

オフィスソフト用の文書ファイルフォーマット規格。ISO/IEC 26300、JIS X 4401(オフィス文書のためのオープン文書形式)。
ワープロ(.odt)、表計算(.ods))、プレゼンテーション(.odp)、数式(.odf)、グラフ(.odc)、データベース(.odb)など、いわゆるオフィスソフト全般について、ソフトメーカー間の個別仕様を、XML形式データで標準化することを目的とします。
また、OpenDocument形式のファイルをODFといいます。

多くのオフィス製品が、これらと互換性を持っています。例えば Word では、ファイルのタイプとしてODF(拡張子 .odt)を指定することにより、入力・出力ができます(部分的に不一致の機能もありますが)。

CSV(comma separated values)

表計算ソフトのスプレッドシートのセルのデータ(フォントや色、罫線などの情報は扱いません)をテキストデータに変換したものです。多様な表計算ソフトで共通に扱えます。フラットな2次元データですので、関係データベース(RDB)と相性がよいのですが、「XMLの記述例」のような階層型のデータの記述はできません。
 名称は「コンマ区切り」ですが、スペース区切りにすることもできます。

JSON(JavaScript Object Notation)

そもそもは、JavaScript用に開発されましたが、他の言語でも使えます。
 XMLの記述を単純にしたものです。上掲の「XMLの記述例」をJSONで記述すると、次のように簡素になります。

YAML(YAML Ain’t Markup Language)

JSONが主にJavaScript用であるのに対し、YAMLは Python や Ruby などの軽量言語での利用を目的としており、それぞれの言語でYAMLを便利に使うための機能をもっています。

プロバイダ科㎜の各型式を規格化したものです。行政での文書形式として Information technology -- Open Document Format for Office Applications (OpenDocument) v1.0