Extensible Markup Language
OpenOffice.org、AbiWord、およびAppleのiWorkなどのアプリケーションソフトウェアのネイティブファイルフォーマットは、XMLである。
従前、オフィススイートには各ソフトの特有のバイナリ形式としてデータが保存されていた。しかしながらこれでは互換性が低く、様々な情報をデータベースとして利用するオフィススイートでは不都合が生じていた。 そのため、データの標準化を進めて互換性を高めるため、各オフィススイートはXML形式でデータを出力する機能や、そもそも標準保存形式をXMLベースとするものが増えてきた。
OpenOffice.orgはXMLベースの保存形式を当初より標準としていた(英語版バージョン1.0は2002年5月1日リリース)。また、OpenOffice.orgに限らず、どのオフィススイートでも利用できるOpenDocument形式が国際標準化機構(ISO)によって標準規格として認定されている。
もう一つのオフィススイート用の保存形式である Office Open XML も、ISOにより標準規格として認定されている。
1 で文字参照を使わずに直接にXML文書に記述することができる。
現在、XML 2.0 に関する議論が行われている。 XML-SW (SW は、skunk works スカンクワークスの意味) が、XMLの最初の設計者の一人によって書かれた。 XML-SW には、XML 2.0 はどのようなものかということについての、いくつかの提案を含んでいる。 その内容は次のとおりである。
Document Type Definition (DTD、文書型定義) をXMLの構文から排除する。
XML名前空間、XML Base およびXML情報集合 (情報集合) をXML仕様に統合する。
World Wide Web Consortium (W3C) では、XML Binary Characterization (XMLバイナリ表現) のワーキンググループが活動しており、同ワーキンググループでは、XML情報集合をバイナリ形式に符号化するために、ユースケースと特性を調査する予備研究を行っている。 このワーキンググループは、公的な標準を制定することが認可されているわけではない。 XMLは定義上明確にテキストに基づいているため、ITU-TとISOは、それぞれが定めるバイナリインフォメーションセットに対して、混乱を避けるために Fast Infoset の名前を使っている (参照: ITU-T Rec. X.891 | ISO/IEC 24824-1)。
XML文書の構文は、同じ情報を表すバイナリ表現と比べて、冗長でサイズが大きい。
XML文書は冗長であり、記憶装置、転送、処理のコストの面で、効率的な運用に悪い影響を与える可能性がある。
XML文書の構文は、他の「テキストに基づく」データ転送形式と比べて冗長である。
XMLはその前身であるSGMLよりも簡素化されたとはいえ、その処理は決して軽くはなく、インターネット上のプロトコルなど速度と軽さが要求される分野では、採用が見送られることがしばしばある。
XMLが表現形式として採用している階層型モデルは、関係モデルやオブジェクト指向グラフと比べると制限が大きい。
オーバーラップする (階層構造ではない) 節 (ノード) の関連を表現するには、余分な努力が必要である。
XML名前空間を使うことには問題がともなう。名前空間を正しく扱うXMLプロセサを実装することは、難しい作業になる可能性がある。
XMLは、「自己文書化」として表現されることが多い。しかしこの表現では、重大なあいまいさがあることを考慮していない。
XML文書における内容と属性の区別は、一定の人々にとっては不自然に感じられる。XMLのデータ構造の設計を難しくする要因となっている。
いくつかのスキーマ言語では、特定のXML文書の構造を記述する能力に加えて、個々のXML文書をその特定のXML文書構造に適合するように変換する機能も、限定的ながら備えている。
DTDとXML Schemaはこの変換機能を備えている。 DTDと XML Schema では、XML文書に属性の既定値を与えることができる。RELAX NGとスキマトロンは、意図的にこの機能を外している。 例えば、XML情報集合を正確に扱うことが、RELAX NGとスキマトロンの仕様策定時に変換機能を外した理由の一つである。
RELAX NGは人気のあるもう一つの新しいスキーマ言語である。2001年12月にOASIS (構造化情報標準促進協会) で仕様が策定された。ISO (国際標準化機構) にて定められた国際標準でもある。ISOでは、文書スキーマ定義言語 (DSDL) の一部分を構成する仕様として位置づけられている。
RELAX NGのスキーマの記述方法は、2つの形式がある。XMLに準拠した構文 (XML構文、xml syntax) と、XMLに準拠しない短縮構文 (compact syntax) である。短縮構文は、読みやくすることとより書きやすくすることを目指している。ただし、短縮構文で記述されたスキーマをXML構文のスキーマに変換する方法と、その逆の変換を行う方法は、予め定義されているので、ジェームズ・クラークが開発した Trang conversion tool を使えば、標準のXMLツールを使う利便を享受することができる。
RELAX NGはXML Schemaよりも簡潔なスキーマ定義と簡潔な妥当性検証の枠組みを、備えている。そのためRELAX NGは、XML Schema と比べて、使いやすく、またRELAX NGの妥当性検証器を実装することも容易になっている。
RELAX NGもまた、データ型フレームワークプラグインを使う機能を備えている。 RELAX NG でスキーマを記述する人は、例えば、XML文書でXML Schemaのデータ型の定義に適合させたいと考えるかもしれない。 そして RELAX NG では、データ型フレームワークプラグインを使うことにより可能となっている。
ボサックは、自分の作業においてマイクロソフトから支援を受けた。
XMLの仕様は、11人のメンバーからなるワーキンググループにより編集され、だいたい150人から構成される Interest Group のメンバーから支援を受けて作成された。 技術的な論議が Interest Group のメーリングリストで提起され、提起された論議は合意形成により解決された。合意形成ができなかった場合は、ワーキンググループのメンバーの投票による多数により解決された。 このアクティビティで行われた設計上の決定とその根拠の記録は、Michael Sperberg-McQueen が1997年12月4日に編集した。 このアクティビティではジェームズ・クラークが技術リーダとして貢献した。 クラークの貢献として特筆されるのは、空要素 "<empty />" の導入と、この技術の名称 "Extensible Markup Language" (XML) の命名である。 この技術の名称として、他に提案され吟味されたものの一部を次に示す。
MAGMA (Minimal Architecture for Generalized Markup Applications)
SLIM (Structured Language for Internet Markup)
XML文書 (あるいはSGML文書、HTMLウェブページを含む) において、文書型宣言 (DOCTYPE宣言、Document Type Declaration) は、その文書を特定の Document Type Definition(DTD、文書型定義) のスキーマと関連づけることを記述するものである。なお、Document Type Definition (DTD、文書型定義)は、XMLで使うことができるスキーマ言語の一つである。文書型宣言は、その文書が特定のスキーマに準拠していることを宣言する。
XML文書では文書型宣言を記述してもよいし、記述しなくてもよい。DTDをスキーマ言語として妥当性検証を行うことを想定しているのであれば、文書型宣言の記述は必須となるであろう。DTDで妥当性検証を行わない場合でも、後述する実体参照などを文書中で使うのであれば、文書型宣言において文書中で使う実体を宣言することができる。
文書型宣言は、その文書が特定のスキーマに準拠していること (妥当なXML文書であること) を、保証しているわけではない。文書型宣言に記されたスキーマに準拠しているかどうかを判断するには、検証XMLプロセサでその文書を検証する必要がある。
文書型宣言の一般的な構文は次のとおりである。
ここで外部サブセットとは、そのXML文書のDTDを構成する (要素の型の宣言、後述する実体の宣言などの) 宣言群のうち、別ファイルに記述された宣言群のことである。また内部サブセットとは、そのXML文書のDTDを構成する宣言群のうち、文書型宣言内に直接記述された宣言群のことである。