Extensible Markup Language
整形式XML文書は、とりわけ、次に示す規則に適合しなければならない。
空要素ではない要素は開始タグと終了タグの両方によって境界が定められる。
空要素は空要素タグ (自分自身で開始タグと終了タグの2つの機能を兼ねるタグ) で記述することができる。例えば <私は空です/> のように記述することができる。この例は <私は空です></私は空です> と意味的に同等である。
属性値は全てシングルクォート (') かダブルクォート (") のいずれかで括る。シングルクォートで始められた属性値はシングルクォートで終わり、ダブルクォートで始められた属性値はダブルクォートで終わる。
タグは入れ子の構造をとることができる。ただしタグがオーバーラップしてはならない。ルート要素ではない要素のおのおのは、必ず別の要素に含まれる。
XML文書は宣言された文字符号化方式 (文字コード) にしたがって記述される。文字符号化方式は、XML文書がHTTPを介して転送される場合に "Content-Type" ヘッダをつけるように暗黙的にXML文書の外部で指定しても良いし、XML文書の内部で文書の先頭のXML宣言内で宣言しても良い。このような宣言がない場合、Unicodeの文字符号化方式が使われていると仮定される。XML文書の最初のバイトをみて、UTF-16のバイト順マークと合致すればUTF-16であると仮定する。合致しない場合はUTF-8であると仮定する。
こうした妥当性検証の機構は次のことを容易にする。 有効な単体テスト 有効な防火壁 (ファイアウォール) 有効な受け入れテスト 契約に基づく有効な仕様 有効なソフトウェア構築
XMLの階層構造は、(全てではないが) ほとんどの種類の文書の表現に向いている。
XMLはプレーンテキストとして表現される。プレーンテキストは、他のプロプライエタリな文書形式と比べて制限が少ない。
XMLはプラットフォーム独立である。このため技術の移り変わりによる影響に比較的強い。
XML文書は、スキーマが変更されても、前方互換性と後方互換性を保持することは、比較的容易である。
XMLの前身であるSGMLは、1986年から使われつづけている。そのため大量に蓄積された経験やソフトウェアを活用できる。
整形式XML文書の要素の断片もまた、整形式のXML文書である。
XML Pointer Language (XPointer) は、XMLに基づいたインターネットメディアのコンポーネントを指し示す体系である。
「これは書籍です.... 」は、書籍要素の内容である。
要素の内容を構成するテキストはまた、さらに任意の数の要素を含むことができる (なお、このように一つの要素内に文字列データと子要素が混在するものを、「混合内容」と呼ぶ)。 すなわち、一般的なXML文書は木構造をなす。 この点において、XMLはプログラミング言語LISPのS式と似ている。 S式でも木構造を記述する。S式の木構造のおのおのの節は、自分自身のプロパティリストをもつことができる。
要素は内部に別の要素を含むことができる。構造化したXML文書の例を示す。
要素の属性の値は、必ずシングルクォート (') かダブルクォート (") で括らなければならない。そして要素内にある属性は、互いに属性名が異なっていなければならない。XML文書では要素は正しく入れ子になっていなければならない。要素は決してオーバーラップしていてはならない。
例えば、次の文書は整形式XML文書ではない。なぜなら 書名 要素と 著者 要素がオーバーラップしているからである。
次の2つの文書は整形式XML文書である。
整形式XML文書においては、XML文書は正確に一つのルート要素 (文書要素; document element とも呼ばれる) をもたなければならない。
XML文書の正当性を自動的に検査するための方法を説明する。
あるXML文書が、整形式XML文書としての条件のみを満たした文書であるか、それとも妥当なXML文書としての条件をも満たした文書であるかを、判別することは、比較的容易である。というのも、整形式XML文書であるための規則と、XMLの妥当性検証のしくみについては、XML文書を扱うツールの移植性を考慮して設計されているからである。つまりこの設計方針は、XML文書を扱うツールであれば、どのようなXML文書でも扱うことができるということである。
独立したツールを使い、XML文書の正当性を自動的に検査する例を示す。
XML文書を扱えるウェブブラウザで、例えば Mozilla Firefox や Internet Explorer などで、XML文書をロードする。
xmlwf のようなツールを使う (XMLプロセサの実装の一つである Expat(英語版) に通常は同梱されている)。
何らかのプログラミング言語を使って文書を構文解析する。例えばプログラミング言語Rubyでは次のようになる。
このため受け渡しするデータの詳細な仕様やその他の文書を書かなければならなかったし、文書の書き手を別途に確保しなければならないこともあった。
XMLが一定の構造をもち厳密な構文解析の規則をもつことで、ソフトウェア設計者は構文解析の作業を標準的なソフトウェアツール (妥当性検証器、バリデータ) に任せることができる。そしてXMLには、用途に特有の言語を開発するための一般的な、データモデル指向の枠組みがある。 このためソフトウェア開発者は、比較的高水準の抽象度において、自分たちが扱うデータの規則の開発に専念するだけでよい。
XML文書をスキーマに照らして妥当性検証を行うための、十分にテストされたツールが、数多く存在している。XML文書をスキーマに照らして妥当性検証を行うためのツールを、妥当性検証器 (バリデータ) という。妥当性検証器は、スキーマに表現された制約にXML文書が準拠しているかについて、自動的に妥当性検証を行う。 妥当性検証器は、XMLプロセサ (XMLパーサ) に含まれていることもあれば、XMLプロセサとは別に提供されていることもある。
これまでに述べたスキーマの使い方とは別の使い方も存在する。 例えば、XMLエディタは、XML文書の編集を支援するためにスキーマを使うことができる。こうしたXMLエディタでは、妥当な要素名や妥当な属性名を提示することなどができる。