XML

2015.07.27

XMLとは

XML(Extensible Markup Language)は、情報の内容にタグを付加して構造的に記述し、コンピュータ処理をしやすくする技術とその応用である。新たな情報体系のタグセット(XMLボキャブラリという)を自由に作ることができ、産業、商業、学術、政府など広い分野で利用されている。中核は1998年にW3C(World Wide Consortium)の勧告となった「Extensible Markup Language (XML) 1.0」仕様である。その周りに各種の関連仕様、オープンソースや商用のXML処理プログラム、無数のXMLボキャブラリがある。

 

もっと詳しく!

XMLの特長

・情報の構造記述をプレーンテキストだけで行うことで可読性が高く、またインターネットでの交換性、流通性の高いデータを作れること。
・タグ(要素型)の柔軟な拡張性によって、事象をよりリアルに記述できること。
・内容とその付加情報(タグ)を一体でもつ自己記述性によって、パッケージソフトに依存しない永続性の高いデータを作れること。

 

XMLの歴史

XMLの出自はSGML(Standard Generalized Markup Language)である。SGMLは1980年代にISO標準(ISO 8879:1986、JIS X 4151:1992)となった。しかし、仕組みが複雑で難しく、プログラム類が高価なことなどから、普及しなかった。またWebで配布するのに向いていないなどの問題があり、SGMLの簡易版としてXMLが提案された。

 

XML文書の例

XMLで文書を表現するときの基本単位は要素である。要素は次のような形式である。

<日付>5月10日</日付>

この例では、<日付>を開始タグ、</日付>を終了タグ、5月10日を要素の内容という。日付はタグの名前であり、XMLでは要素型と呼ぶ。また開始タグ中に、その要素の付加情報である「属性」を組み込むことができる。

一つのXML文書を要素単位でみると次の例のようにツリー構造をとる。

<データ record=”1″>
<日付>5月10日</日付>
<勘定科目>交通費</勘定科目>
<金額>1,260</金額>
</データ>

この例では、<データ>要素が最も外側で、<データ>要素の内容は<日付>、<勘定科目>、<金額>の3つの要素である。このとき、<データ>要素をルート要素といい、<日付><勘定科目><金額>は<データ>要素の子供、<データ>要素は<日付><勘定科目><金額>の親という。<日付><勘定科目><金額>は互いに兄弟である。

また、上の例で record=”1″を属性、recordを属性名、1を属性値という。

 

XMLボキャブラリの作り方

XML 1.0 仕様は、タグを<>で囲むこと、タグの名前(要素型)に使える文字、属性と属性値の定義の仕方など、一般的な規則を決めている。

XMLボキャブラリは用途ごとに作成し、それぞれ多数のタグの名前、要素の階層化、要素の内容が文字なのか、子供の要素なのか、要素の出現回数、兄弟の出現順序など構造をモデルとして規定する。XMLボキャブラリを記述するにはスキーマ言語を使う。SGMLの時代から使われているスキーマ言語がDTD(Document Type Definition)である。その他に、W3C XML Schema、RELAX NG、Schematronなどが有力である。

 

XML文書の編集

XML文書を編集するには、専用のXML編集ソフト(XMLエディタ)を使うことが多い。XMLエディタを使えば、XML文書をXMLボキャブラリで規定する構造モデルに沿うように編集しやすい。しかし、XML編集機能をもたないテキストエディタでもXML文書を編集できる。

 

整形式

大ざっぱにいって、次の3つの条件を満たすとき整形式XML文書という。

イ.ルート要素がひとつで、他の要素はルート要素の子孫となる(ルート要素は他の要素に含まれない)。
ロ.開始タグと終了タグがセットになっている。HTMLのように終了タグを省略することはできない。
ハ.ルート要素に含まれる要素は、互いに親子または兄弟の関係になっている。ひとつの要素の開始タグと終了タグが入れ違いにならない。

整形式を満たすかどうかを検証するにはXMLボキャブラリは不要である。これに対して、XMLボキャブラリで規定する構造モデルに適合しているXML文書を妥当なXML文書という。

 

XMLパーサー

文書を読み、それが整形式XML文書になっているか、妥当なXML文書かどうかを検証するツールがXMLパーサーである。

 

XSL変換

一つの応用分野に対してXMLボキャブラリの決め方はひととおりではない。上の例は次のような少し異なるXMLボキャブラリを使って表すこともできるだろう。

<data record=”1″>
<date>5月10日</date>
<amount item=”transportation”>1,260</amount>
</data>

この二つのXML文書は、お互いに交換できるという点で、構造と内容ともに等価である。

あるXMLボキャブラリに沿うXML文書を別のXMLボキャブラリに沿うように簡単に変換(トランスフォーメーション)できる。このトランスフォーメーションを記述するのがXSLT(XSL Transformations)である。XML文書とXSLTを入力として、新しいXML文書に変換するプログラムをXSLTプロセサという。XML文書として作成すれば、XSLTにより、別の形式に変換して利用するのは容易である。

 

XML文書の応用

XMLが誕生したころは、プロトコルやパラメータデータなどソフトウエア開発やインターネット分野でXMLが利用されたが、現在ではより簡潔に構造化ができるJSONにその座を渡そうとしている。

XMLの主な用途は文書の制作であり、用途別にXMLボキャブラリが標準化されている。航空機・防衛産業の技術文書用のS1000D、コンピュータ系のマニュアル用のDocBook、有価証券報告書のためのXBRL(eXtensible Business Reporting Language)、専門技術情報誌のためのJATS(Journal Article Tag Suite)など。欧米の政府機関・議会、防衛・航空機・自動車産業などでは、大規模な文書をSGML時代から構造化文書として作成してきた。SGMLのユーザーは徐々にXMLに乗り換えておりヘビー・ユーザーとして健在である。

新しいXMLボキャブラリではDITA(Darwin Information Typing Architecture)が有力になっている。DITAは文書をトピック単位で記述し、トピックをマップ(いずれもXML文書)で組み立てる方式であり、トピック単位にすることで再利用や多言語展開が効率良くできる。

マイクロソフト・オフィス2007以降は標準の保存でXML文書になる。電子書籍EPUB3を構成する主なファイルもXML文書である。このように文書の保存・配布形式としてもXMLが幅広く活用されている。

 

HTML5とXHTML5

XML文書はコンピュータで処理することを主眼としている。このため終了タグを省略できないなど冗長で、整形式でないと処理できず、些細な記述ミスでエラーになるなど面倒である。Webブラウザは歴史的にタグに多少の誤りがあっても許容してきた。HTML5は、人間が制作しやすいようにタグの付け方を簡易化しているので、HTML5はXML文書にならない。

HTML5のXML形式としてXHTML5も規定されている。ブラウザで閲覧するだけではなく、さまざまなXMLツールを使って処理するときはXHTML5の方が向いている。大抵のHTML5文書はツールを使ってXHTML5文書に変換できるだろう。

 

[小林 徳滋 アンテナハウス株式会社 20150713]