Extensible Markup Language
Pull Parsing は、XML文書を、最初から順番に読み込み、Iterator パターン のデザインパターンを使って項目 (item) の一連の流れとして扱う、近年に徐々に普及してきた技法である。 Pull Parsing の技法により、再帰下降パーサを実装することができる。 再帰下降パーサでは、パースを実行するプログラムは、パースの対象となるXML文書の構造と似ている。 そしてパースの中間結果を取得することができる。
パースの中間結果を、パースを実行するメソッド内の局所変数 (ローカル変数) として使うことができる。 あるいは、低水準のメソッドの引数として渡したり、高水準のメソッドへの戻り値として返すことができる。 Pull Parsing の技法を提供する実装としては次のものがある。
Streaming API for XML (StAX) - Java
SimpleXML - PHP
System.Xml.XmlReader - .NET Framework
例えば、JavaのStAXフレームワークでは、本質的な「反復子」 (イテレータ) を作成して使うことができる。
Simple API for XML (SAX) は、字句解析を行いイベント駆動で処理を行う API である。SAXを使うとXML文書は文書の最初から順次読み込まれ、その内容はプログラマが実装したハンドラオブジェクトの様々なメソッドへのコールバックとして報告される。SAXを使ったXML文書処理は高速であり、少ないコンピュータ資源を効率的に使って非常にサイズの大きいXML文書を処理することが可能である。
SAXを使うことに伴う問題は、XML文書に対してランダムアクセスを行って情報を取り出すことが難しいことである。そのため、SAXを使うに際し、プログラマはXML文書のどの部分が現在処理対象となっているか把握する為の機構を実装しなければならない。
SAXは、処理対象となるXML文書中のある種類の情報がどの部分に出現するかに依らず、常に同じように処理されると保証できる場合に用いるのが望ましい。
情報集合への追加情報すなわち情報集合に対する改変は、スキーマによる妥当性検証を行う際に、情報集合を改変することをいう。 例えば、情報集合に属性の既定値 (デフォルト値) を追加することなどがある。情報を追加された情報集合は、スキーマ検証後情報集合あるいはPSVI (post-schema-validation infoset) と呼ばれる。
情報集合への追加情報については、賛否両論がある。 情報集合に情報を追加することに否定的な見解としては、情報集合への追加情報はモジュール性を侵害し相互運用性の面での問題を引き起こす危険があるとする。 なぜなら、同じXML文書を扱う複数のアプリケーションソフトウェアは、受け取る情報が妥当性検証を行うかどうかに依存してしまうからである。 アプリケーションソフトウェアが、妥当性検証を行う場合に受け取る情報と、妥当性検証を行わない場合に受け取る情報が、異なってしまうのである。
XML Schema は、XML情報集合への追加情報を扱うことができる。 RELAX NGは、情報集合への追加情報を扱わない。 RELAX NG では、情報集合への追加情報に否定的な立場をとっている。
XML文書の正当性の水準には、整形式XML文書と妥当なXML文書の、2つの水準がある。なおXML文書に対して、整形式XML文書としての検査のみを行うXMLプロセサを非検証XMLプロセサといい、整形式XML文書としての検査に加えて妥当なXML文書としての検査を行うXMLプロセサを検証XMLプロセサという。
XML名前空間 (Namespaces in XML) を使うことで、同一のXML文書内で異なる複数のボキャブラリ(スキーマ)に由来する要素と属性を、名前の衝突を発生させることなく、含めることができる。後述する。
Extended Reference Concrete Syntax (ERCS) から、XML 1.0 の命名規則が採用された。ERCSは、十六進数の文字参照を導入しており、全てのUnicodeの文字を使うことができるようにするために参照の概念を導入している。
XML仕様の設計に関する議論のなかで開発された革新的な考え方には、次のものが含まれる。
XML文書の文字符号化方式 (文字コード) の決定のアルゴリズムと、XML宣言における文字符号化方式の指定
処理命令のターゲット
xml:space 属性
空要素のタグのための新しい要素終了区切り
XMLインフォメーションセット(英: XML Information Set, Infoset)またはXML情報集合 (—じょうほうしゅうごう) は、XML文書の抽象的なデータモデルを「情報項目」 (information item) の集合を使って規定している。 World Wide Web Consortium (W3C) から、2001年10月24日にXML情報集合仕様が勧告された。 XML情報集合の仕様における定義は、整形式XML文書内の情報を参照する必要がある他の仕様において使われることが想定されている。
一つのXML文書には、そのXML文書が整形式でありかつXML名前空間の制約に準拠している場合、一つのXML情報集合がある。 XML情報集合を構成するためには、そのXML文書が妥当なXML文書であることは、必須要件ではない。
一つのXML情報集合には、次に示す11種類の情報項目がある。
文書情報項目
要素情報項目
属性情報項目
処理命令情報項目
展開されなかった実体情報項目
文字情報項目
コメント情報項目
文書型宣言情報項目
解析対象外実体情報項目
記法情報項目
名前空間情報項目
XML情報集合の Second Edition (第2版) が2004年2月4日に勧告された。