XML関連記事を読みこなすために
知っておきたい用語解説
目次 XML XHTML DTD DOM SAX XML Schema XSLT XPath XPointer XLink XML names XML Infoset RDF W3C 要素 属性 パーサー スキーマ トラバーサル |
XML関連の記事の中には専門用語が多い。この用語解説では、そうした専門用語を調べるときに役立ていただきたい。今後語彙も増やし、説明も充実させていく予定だ(編集局)
XML
eXtensible Markup Language
(エックスエムエル)
直訳すると「拡張可能なマーク付け言語」。構造化されたデータを記述し、メンテナンスしていくといった用途に向いたデータ記述言語、もしくはそのフレームワーク。逆に言うと、全く構造化されていないデータを記述するのにはメリットも少ない。ここでいう構造化されているデータとは、入力フォームのようにデータ項目がある程度あらかじめ決まっているようなもの。発注書や請求書、病院の診療記録(レセプト)などがその例にあたるだろう。
XMLでは、HTMLのようにタグを用いてデータの種類や意味を表現する。HTMLでは、利用できるタグの種類や意味があらかじめ決まっていたが、タグを利用者が独自に設定できる体系的な枠組みを用意したのがXMLだ。
XMLのもっとも単純な例を次に示す。
<?xml version="1.0" encoding="Shift_JIS"?> |
ここで使われている<発注書>や<単価>といったタグは、独自に定義されたものだ。このように、XMLは業務データを表現するのに必要なタグを利用する側が独自に定義できる。ただし、企業ごとに勝手にタグの付け方を定義してしまうと企業間のデータ交換が難しくなるため、現在では業界ごとに必要なタグとスキーマを定義してデータ交換を容易にしようという動きが活発だ。
XML文書はテキストファイル形式で作成されるため、文字コードの問題を除けば基本的にどのコンピュータでも読み込み、表示して内容を参照することができる。普通のテキストエディタでもXML文書は作成可能であり、内容を確認するのも簡単。このシンプルさも特徴の1つだ。
XMLはSGMLの後継として位置づけられたり、HTMLを刷新するものとして位置づけられたりすることが多い。それらは歴史的背景という意味では事実だが、現状では当初考えられていたよりも遥かに多方面の分野でその有用性が認知され、利用が検討されている。その意味でXMLは「構造や属性などの暗黙情報の記述ができる次世代プレーンテキスト」とも言うべきものである。
これまでの情報システムで、どのコンピュータでも読み書きできるようなデータ記述方法の最大公約数は、長らくプレーンテキストであったといえる。このコンピュータ間のデータ交換能力の水準を大幅に引き上げるデータ表現の標準技術として、XMLは期待されている。
関連リンク
http://www.w3.org/TR/1998/REC-xml-19980210
(XML 1.0 specification)
XHTML
The Extensible HyperText Markup Language
2000年1月にW3Cが、XHTMLの最初のバージョンであるXHTML 1.0を勧告した。これはHTML 4.0を、XML 1.0のアプリケーションとして再定義したもの。XHTMLは今後、HTMLに変わるWWW上の新しい標準になるとみられる。
HTMLは、Web上でドキュメントの表現手段として広く使われてきたが、XHTMLはHTMLをXMLによって再定義することで、こうしたHTMLに対する今後の拡張を柔軟に行えるようにした。
従来のHTMLはXMLの構文規則に完全には従わないため、XMLパーサやXML namesなどのXMLの利点を享受することができなかった。逆に、XMLでWebサイトを公開すると、既存のWebブラウザでの表示ができなかった。XHTMLは既存のHTML 4.0をベースに、XMLの構文規則に従ったWell-Formedな形式としたことで、HTML文書もXMLパーサで扱えるようにした。これで、XMLで記述されたデータや、膨大な共通資源となりうる他のXML系言語(MathMLなど)も、XML namesを使って埋め込める。
XHTML 1.1では、表示デバイスの能力やユーザー設定を記述するCC/PP(Composite Capability Preference Profiles)と組み合わせることで、Webブラウザだけではなく、携帯電話などデバイスに依存しないさまざまなユーザーエージェントへ対応する作業が続けられている。
関連リンク
http://www.w3.org/TR/xhtml1/
訳語は「文書型定義」。XML文書で利用可能な要素の型や、要素で利用可能な属性を定義できる。このDTDの定義を参照して文書型宣言を行い、かつ参照しているDTDに従うXML文書のことを「validなXML文書」と呼ぶ。ただし、XMLでは文書がDTDを持たないことを認めている。この場合には基本的な構文規則を満足していればよく、それを「Well-FormedなXML文書」と呼ぶ。
もともとDTDはSGML時代の資産であり、応用分野としてドキュメンテーションを強く意識して作られたものであった。このため、リレーショナルデータベースにおける整数型や日付型などの、データ型の制約を表現することができなかった。また名前空間のサポートに問題があったり、さらにはDTD独自の構文形式を強いるため、検証用プロセッサを別途構成しなければならないという難点もある。
このため、現在は(独自の構文でなく)XML構文で記述できるスキーマ仕様が活発に議論されている。現在W3Cで作業中なのはXML Schemaであるが、これもアーキテクチャが巨大になってきているためか、RELAXなどいくつかの傍流を生んでいる。
関連リンク
http://www.w3.org/XML/1998/06/xmlspec-report-19980910.htm
(XMLspec DTD)
DOM
Document Object Model
(ドム)
プログラムやスクリプトなどから文書の構造にアクセスし、参照や更新を行うためのAPI。
既に勧告されているDOM Level 1仕様のアクセス対象はHTMLとXMLであり、それらに対する文書の論理構造とアクセス手法を規定している。プログラミング言語やプラットフォームに依存しないようにCORBAのIDLで記述されており、IDLコンパイラにより各ターゲット毎のインターフェースを生成できる。
DOMを実装したアプリケーションは、一般にXML文書を読み込んでメモリ上に保持することになる。このアプリケーション内のXML文書に対してDOMを通じてさまざまな操作が可能となる。
今後はDOMを実装したXMLのオーサリングツールやエディタなどが数多く登場してくるだろう。こうした製品では、ユーザーが行う文書への操作はすべてDOMを通じて、オーサリングツール内にある編集中のXML文書に反映されることになる。これは、データベース業界がSQLによってデータ操作を標準化していることに似ている(SQLはAPIではないが)。
しかし上記の説明でも分かるとおり、DOMを利用してXML文書を操作する場合には、XML文書をメモリ内部に全部読み込んでDOMエンジン内に保持しておくような実装が必要になるだろう。これは大規模な文書の操作に不向きである。こうした場合に、XML文書を少しずつ読み込んで次々に解釈していくためのAPIとして「SAX」が用意されている。
DOM自体はインターフェース仕様であり、DOMオブジェクトを実装する方法や手続きのコード化については規定されていない。このため、実際の性能などは実装に依存する。
関連リンク
http://www.w3.org/DOM/
XML文書に対するイベント駆動型のインターフェース。ここで言うイベント駆動型とは、XMLファイルをオープンしてスキャンしながら、要素の開始や終了といったイベントを直接アプリケーションに通知するという意味である。DOMのようにツリー形状をメモリーに展開しないため、一般に少ないメモリーで済ませることができる。
特に、巨大なXMLファイルを扱う場合や、あるXMLファイル中の1つの要素だけを取り出せばよいような場合は、DOMのようにXML文書のツリー構造をメモリーに展開してからアクセスするより、スキャンしながらデータを取り出していくSAXの方が向いていると言える。
とはいえ、DOMとSAXはサービス層が異なるため、単純に比較はできない。SAXはこれをもとに新たなインターフェース仕様を構成するのに使うこともできる、より低い層のAPIであることを認識されたい。
関連リンク
http://www.megginson.com/SAX/index.html
XML文書の構造とデータ型を定義するための言語。これまで、XMLの文書型定義のためにはDTDが使われてきた。しかし、XMLの用途が当初想定されたよりも遥かに多岐にわたるに至って、DTDの持つ機能だけでは十分でないという認識が持たれた。
そこで、ベンダーやコミュニティが独自に、XML-Data、DCD、SOX、DDMLなどのスキーマ書式を規定し始めた。これらの動向を踏まえW3Cで検討が開始されたのがXML Schemaである。
XML Schema仕様は大きく「構造」と「データ型」の2部に分けて構成されているが、現在はデータ型についてはほとんど議論が成熟してきており、構造仕様の領域でのコンセンサスが課題となっているようである。
関連リンク
http://www.w3.org/TR/xmlschema-1/
(Structures)
http://www.w3.org/TR/xmlschema-2/
(Datatypes)
XSLT
XML Stylesheet Language Transformation
XSLTは、あるXML文書を別のXML文書に変換するための言語である。もともとXSLTはXML用のスタイルシート言語であるXSLの一部として使用するために設計されたが、その文書整形のためのボキャブラリを除けばかなり汎用的なXML変換仕様として利用できることが分かったため、XSLTとして独立した一つの勧告仕様となった。
その名の示す通り、主な用途はXSLの一部として変換処理を担うことにあるが、最近では複数の異なるXMLのボキャブラリー間で整合性をとるためのツールとしても注目を集めている。
関連リンク
http://www.w3.org/TR/xslt
XML文書中の特定の位置を記述するために用いる文法。XSLTやXPointerで、XML文書中の場所を示す文法を共有しようという試みから成立した。
XPathでは位置を記述するのに、URLなどで馴染み深いパス記述を利用する。さらに、位置を特定するアドレス機能だけでなく、パターンマッチングにも流用できるように設計されているため、柔軟な位置指定が可能で汎用性の高いものになっている。
XPathはXML Infosetとの整合性を意識して制定されている。
関連リンク
http://www.w3.org/TR/xpath
XMLのリンク機能でアンカーとなるリソースを特定するための機能。XLinkと対となって利用することが想定されている。
XPointerはXPathを用いてXML文書の各要素などを指定する。XPathに対する拡張項目として、特定の文字列でマッチングできること、範囲の概念をサポートすること、特定の要素をIDで指定できることなどがある。
XPointerは、あらゆるURIのXML文書に対して、フラグメント識別子として用いることができる。
関連リンク
http://www.w3.org/TR/xptr
XLinkは、他のXML文書へのリンクやWeb上のリソースへのリンクを提供する。
HTMLでは、他のHTMLファイルか、アンカータグ(<a>タグ)のある場所へしかリンクを張ることができなかった。XLinkはこの機能を大幅に拡張し、XPointerやXML namesの機構を活用して仕様が定められつつある。その特徴は例えば以下のようなものである。
- XPointerにより、アンカーのない部分へもリンクが可能
- 単方向リンクだけでなく、双方向リンクも提供
- リンク自体を、リンク元やリンク先の文書と分離できる
- 分散された外部の文書を埋め込んで、新たに仮想ドキュメントを構成可能
- リンクを横断するタイミングやイベントなどを指定可能
これらの特徴を備えたXLinkは、今までにない強力なハイパーリンク機構をXMLに与えるものとして期待されている。
関連リンク
http://www.w3.org/TR/xlink/
XMLの名前空間。例えば、ある銀行の口座を定めた要素「account」と航空会社の利用客を定めた要素「account」では、同じ「account」という文字列を使っていても全く違うものである。そのため、両者は何らかの方法で区別ができなければならない。これを、URIなどユニバーサルに一意の接頭辞を付加することで区別がつくようにするのがXML namespaceである。
先の例で挙げれば、
<account xmlns="http://www.bank.org/">
<account xmlns="http://www.airline.org/">
上記のように記述することで、命名規則を独自に決めてしまって名前がバッティングしたとしても、それを回避できる。
しかし、上記の方法は名前のバッティングを避けるという意味以上に、同一ドキュメント内で複数のボキャブラリセットを扱える利点が大きい。例えば、XHTMLの構文の中にMathMLを入れ子にすることで、Web文書の中に数式を記述することが容易になるし、XML文書の中に特定の業界団体で標準化された辞書を指定すれば、その要素の持つデータの意味がより明確になり、文書の自己一貫性が実現される。
関連リンク
http://www.w3.org/TR/1999/REC-xml-names-19990114/
XML Infoset
XML Information Set
XML Infosetは、端的に言えばXMLデータモデルである。XML文書を構成する各部分を「情報項目」として定義する。その項目は例えば文書、要素、属性、文字、コメントなどである。そしてこれらから構成される木構造が「XML Infoset」である。つまり、Well-FormedなXML文書が表している概念的なツリー構造を、概念そのままに扱おうという試みに他ならない。
このXML Infosetで用いられている用語がさまざまなXML周辺の仕様書に含められていくことで、より厳密な仕様定義を行うことができ、従って実装上の混乱を招きにくくすることができるという意義がある。
関連リンク
http://www.w3.org/TR/xml-infoset
RDF
Resource Description Framework
RDFはXML周辺の要素技術ではなく、ひとつの実装である。メタデータを記述するための汎用の仕様であるRDFは、その永続化手段としてXMLを採用した、といった方が正しい。
特定のメタデータにRDFを適用するには、まずRDFモデルに基づいたスキーマを記述し、次にこのスキーマに従ってメタデータを記述するという手順を踏む。
RDFのモデルでは、メタデータはシンプルないくつかの概念の組み合わせに細分化できるため再帰的なモデルを採用しやすく、XMLとの相性がよい。
関連リンク
http://www.w3.org/RDF/
W3C
World Wide Web Consortium
(ダブルサンシー、ダブルスリーシー)
説明:
Web関連の仕様制定活動を行う非営利団体。HTML、HTTPはもちろん、XML、XSL、DOM、RDF、CSSなどの重要な仕様を制定している。米国MIT(マサチューセッツ工科大学)、フランスのINRIA(国立情報処理自動化研究所)、日本の慶應義塾大学などが中心になって運営している。
XML文書の要素。簡単に言えば、開始タグと、終了タグと、その間に挟まれる文字列や子タグをひっくるめたもの。以下に例を示す。この1行が要素となる。
<要素>このように開始タグから終了タグまでを要素と呼ぶ。</要素>
空要素というのは、開始タグと終了タグの間に何も入らないもののこと。XMLの構文規則では、このような場合には「<要素></要素>」または「<要素/>」と記述することになる。
ある要素は別の要素を入れ子にして持つことができる。こうした構造は、結果として要素のツリー構造として表現できるため、XML文書は、ツリー構造(もしくは木構造)をもつことになる。
XML文書の要素に含まれる属性。簡単に言えば、開始タグに含まれる等式で記述された部分のこと。等式の左辺にあるのが属性名で、右辺にあるのが属性値。
<要素 属性="属性値">
要素は属性を複数持つことができる。
XMLの文書構造を理解し、要素や属性の値を参照・操作するためのプロセッサ。パーサーが利用するAPIとしてDOMやSAXなどがあり、用途に応じて使い分けることになる。
XMLが注目される理由として、このパーサの存在が大きい。汎用のデータ形式であるXML文書と、そのXMLに対する汎用のアクセスツールであるパーサーがあることで、アプリケーションの中でデータ操作を行う低いレイヤーの作り込みを回避でき、構造化されたデータを共通基盤として使えるようになるのである。
XML関連の文献では、スキーマという言葉が頻繁に用いられる。一般に、スキーマという言葉はデータの構造や型の設計に関する概念としてとらえられてきており、例えばリレーショナルデータベースの表の構造を決定することをスキーマ設計などと呼んでいた(ちなみにOracleで「スキーマ」というと、表の構造ではなくオブジェクトの所有者を表す概念になっているので誤解されないようにしたい)。
XMLの周辺でスキーマという言葉が使われる場合には、おもに2種類の意味で用いられる。1つは、従来と同じように特定のアプリケーションで使うためのXMLのデータ構造・型の定義を意味する。具体的には、DTDやXML Schemaのインスタンスを指す場合が多い。もう1つは、より上流の概念であるフレームワークまで含めてスキーマと呼ぶケースだ。
例えばスキーマがデータ構造・型のことであるとすると、「マイクロソフトのBizTalkはフレームワークであり、採用しているスキーマ定義言語はXDRである」と、分離して言うことができる。
XMLのリンクをたどることや、XMLから作成された木構造をたどること。
XML文書は、XMLのもつリンク機能により、さまざまな文書やリソースがリンクされている。こうしたリソースへアクセスするには、実際にリンクをたどっていく必要がある。こうしたリンクのたどりをトラバーサルと呼ぶ。もしくは、XMLをパースすることで作られる、要素の木構造を探索したり操作するためにたどることも、トラバーサルと呼ぶ。
トラバース、と言う場合もあるようだ。
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|