この文書のエラッタを参照いただきたい。これには、規範性のある訂正が含まれることがある。
翻訳も見ること。
Copyright ©1999-2004 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3Cの免責(liability), 商標(trademark), 文書利用(document use), ソフトウェア使用許諾(software licensing)規則が適用される。
この仕様書は、XML文書の中の情報を参照する必要のある他の仕様で利用するための定義集合を提供する。
この節は、この文書の公開時における位置づけを説明したものである。他の文書がこの文書に取って代わることがある。現行のW3C公刊物のリストやこの技術レポートの最新バージョンは、http://www.w3.org/TR/ のW3C技術レポート索引で見ることができる。
この文書は、W3Cの勧告 (Recommendation) である。この文書は、W3C会員及びその他の利害関係者によりレビューされ、ディレクターによってW3C勧告として公布されているものである。この文書は、安定的な文書であって、参照素材として用いたり、他の文書から規範性ある参照としての引用に用いてもかまわない。勧告を作成する際のW3Cの役割は、仕様に対する注意を引き、その広範な普及を推進するものである。このことは、ウェブの機能と相互運用性とを高める。
この文書は、XML 1.1 および 名前空間 1.1 をカバーするよう、情報セット仕様を更新し、一定の種類の非妥当性の結果を明確にし、いくつかの印刷上のエラーを訂正するものである。これは、W3C XML Activity の産物である。この仕様書は、英語版が規範性ある唯一のバージョンである。しかしながら、この文書の翻訳を探しているのであれば、http://www.w3.org/2003/03/Translations/byTechnology?technology=xml-infoset を見てみること。
この勧告に関連があるかもしれない知的所有権のドキュメンテーションは、ワーキンググループの公開の知的所有権情報開示ページで見ることができる。
この文書のエラーは、[email protected] までレポートいただきたい (公開アーカイブが利用可能である)。この勧告のエラッタリストは、http://www.w3.org/2001/10/02/xml-infoset-errata.html で入手できる。
この仕様書は、XML情報セット (XML Information Set, Infoset) と呼ばれる抽象データセットを定義する。その目的は、 整形式 (well-formed) のXML文書 [XML]の中にある情報を参照する必要のある他の仕様書で利用するために、一貫性ある定義集合を提供することにある。
これは、もれなく網羅しようとしたものではない。情報セットやプロパティを取り込むか否かについての主たる判断基準は、将来の仕様書で期待される有益さという基準である。また、これは、XMLプロセッサが返さなければならない最小限の情報の集合を制定するものでもない。
XML文書は、それが整形式であり、かつ、下記で解説する名前空間制約を満たす場合、情報セットを有する。XMLが情報セットを有するためには妥当 (vaild) でなければならないという必要条件はない。
情報セットは、XML文書を解析する以外の (この仕様書に記述されていない) 手法によって作り出されてもよい。下記の人工情報セットを見ること。
XML文書の情報セットは、多数の情報項目 (information item) からなる。どの整形式XML文書の情報セットも、少なくとも1個の文書情報項目と、その他の数個の情報項目とを包含することになる。情報項目は、XML文書のうちのある部分を抽象的に記述するものである。それぞれの情報項目には、名前付きのプロパティ (property) の集合が結び付けられている。この仕様書では、プロパティ名は、[konnakanji] のように、角括弧に入れて示される。情報項目の型は、第2節に列挙する。
XML情報セット仕様は、特定のインターフェイスや、インターフェイスのクラスを必須としたり好んだりはしない。この仕様書は、明快かつ単純にするため、情報セットを修正樹として表すが、XML情報セットが樹構造を通じて利用できるようにされなければならないという必要条件はない。イベントベースやクエリーベースのインターフェイスを含め (それらに限られないが)、その他の型のインターフェイスも、XML情報セット仕様に適合する情報を提供することができる。
「情報セット(information set)」や「情報項目(information item)」という用語は、コンピューティングで使われる「樹(tree)」や「ノード(node)」という用語に意味が似ている。しかしながら、他の特定のデータモデルとの混同の可能性を小さくするため、この仕様書では前者の用語が使われる。情報項目は、DOMのノードや、XPathデータモデルの「樹」や「ノード」と一対一で対応するものではない。
この仕様書では、「なければならない(must)」、「べきである(should)」、「てもよい(may)」という言葉は、[RFC2119] で規定されている意味を前提としている。ただし、その言葉は大文字で現れない。
XML仕様のバージョンが異なれば、規定される解析ルールも異なることがある。XML文書の情報セットは、その文書のバージョンに応当するバージョンの仕様書のルールに従って、その文書を解析して得られるものであると定義される。 バージョン番号を指定しない文書は、1.0 というバージョンをもつものとみなされる。XMLプロセッサが理解しないバージョン番号のついた文書を受け付ける場合、必ずしも正しい情報セットを生み出せるとは限らないことになる。
[Namespaces] に適応しない XML文書は、技術的には整形式であるが、意味のある情報セットを有するものとはみなされない。すなわち、この仕様書は、[Namespaces] によって規定されている以外の方法で使われているコロンを含んだ要素名や属性名のある文書については、情報セットを定義しない。
さらに、この仕様書は、名前空間宣言の中で相対URI参照を使う文書について、情報セットを定義しない。これは、[Relative Namespace URI References] の W3C XML Plenary Interest Group の決定に従うものである。
[namespace name] プロパティの値は、対応する名前空間属性の既標準化値である。追加のURIエスケーピングは、プロセッサによって適用されない。
情報セットは、そのXML文書を、実体参照を既に展開済みにして、すなわち、その置換テキストに対応する情報項目によって表して記述するものである。しかしながら、プロセッサがこの展開を実行しない環境もいろいろとある。実体が宣言されないこともあり、引き出し可能でないこともある。妥当性検証を行わないプロセッサは、宣言をすべては読まないこととしてもよいし、読むとしても、外部実体をすべては展開しなくてもよいのである。これらの場合には、実体参照を表すため、未展開実体参照情報項目が使われる。
情報セット仕様のすべてのプロパティの値は、[XML], 2.11 "End-of-Line Handling" で解説されている行末標準化を考慮に入れる。
いくつかの情報項目は、[base URI] プロパティまたは [declaration base URI] プロパティを有する。これらは、[XML Base] に従って計算される。リソースの引き出しには、パーサレベル (たとえば、実体リゾルバ内) 以下でのリダイレクションを伴うことがあるので、注意してほしい。この場合、すべてのリダイレクションの後、そのリソースを引き出すために使われた最終的なURIが、ベースURIである。
これらのプロパティの値は、リソースの引き出しには必須とされることもあるURIエスケーピングを一切反映しないが、エスケープ済み文字が文書の中で指定されているか、リダイレクションの場合にサーバによって返される場合、そのエスケープ済み文字を含むことがある。
場合によっては (文書が文字列やパイプから読み込まれると言ったような場合)、[XML Base] の規則から、ベースURIがアプリケーション依存的になるという結果が生じることがある。これらの場合、この仕様書は、[base URI] プロパティまたは [declaration base URI] プロパティの値を定義しない。
相対URIを解釈するとき、[base URI] プロパティは、xml:base 属性の値より優先して使われるべきである。人工情報セットの場合には、それらが一貫しないことがあるのである。
プロパティのなかには、未知 (unknown) や 値なし (no value) という値をとってよいものがあり、それぞれ、プロパティ値が未知であるとか、プロパティは値をとらないと言われる。これらの値は、互いに区別されるし、他のすべての値からも区別される。特に、それらは、それぞれ単にメンバがないにすぎない空文字列や空集合、空リストから区別される。この仕様書は、null という用語を使わない。コミュニティによっては、ここで意図されているのと合致しないことのある特定の含意を有するからである。
上で注記したとおり、XML文書は、情報セットを有するために妥当である必要はない。しかしながら、一定の種類の非妥当性は、いくつかのプロパティに割り当てられる値に影響を及ぼす。実体や記法、要素、属性は、宣言解除されてもよい。記法や要素は、重ねて宣言されてもよい (実体や属性に宣言が複数あっても妥当である)。IDは、定義されなくてもよいし、重ねて定義されてもよい。そうしたケースは、下記の情報項目の定義の中で関連する箇所で注記される。
この仕様書は、XML文書を解析した結果として得られる情報セットについて解説している。情報セットは、その他にも、たとえば、DOMといったようなAPIを利用したり、既存の情報セットを変形するといった手段で構築してもよい。
実在の文書に対応する情報セットは、必然的に、さまざまな点で一貫性を有することになる。たとえば、ある要素の [in-scope namespaces] プロパティは、その要素やその祖先の [namespace attributes] プロパティと一貫することになる。これは、その他の手段で構築された情報セットには当てはまらないことがある。そうした場合には、その情報セットに対応するXML文書はないことになり、それをシリアル化するためには、(たとえば、スコープ内にある名前空間に対応する名前空間宣言を出力することにより) 一貫性を欠く部分を解決することが必須となる。
情報セットは、以下の節で説明する、最大で11の異なる型の情報項目を包含することができる。情報項目ごとに、プロパティがある。参照しやすくするため、それぞれのプロパティに名前を与え、[konnakanji] のように示す。XML 1.0 勧告 [XML] にある定義および/または文法へのリンクが、情報項目ごとに与えられている。
XML定義: document (Section 2, Documents)
XML文法: [1] Document (Section 2.1, Well-Formed XML Documents)
情報セットには、ちょうど1個の文書情報項目 (document information item) があり、その他のすべての情報項目は、文書情報項目のプロパティから、直接的に、または、他の情報項目のプロパティを通じて間接的に、アクセスすることができる。
文書情報項目は、以下のプロパティを有する。
XML定義: element (Section 3, Logical Structures)
XML文法: [39] Element (Section 3, Logical Structures)
要素情報項目 (element information item) は、XML文書の中に出現する要素ごとに1個ずつある。要素情報項目のうち1個は、文書情報項目の [document element] プロパティの値となっていて、要素樹のルート (根) に対応するものであり、その他すべての要素情報項目は、その [children] プロパティを再帰的にたどることでアクセスすることができる。
要素情報項目は、以下のプロパティを有する。
xmlns
という名前の名前空間属性を含む。)、http://www.w3.org/2000/xmlns/
という名前空間URIを有する。その要素が名前空間宣言を有しない場合、この集合はメンバを有しない。
http://www.w3.org/XML/1998/namespace
という名前空間名に結合される xml
というプリフィックスをもつ項目を包含する。xmlns
というプリフィックス (名前空間を宣言するために使われる。) をもつ項目は包含されない。アプリケーションが、そのプリフィックスをもつ要素や属性に遭遇することはあり得ないからである。集合には、[namespace attributes] のメンバのすべてに対応する名前空間項目が含まれることになる。ただし、xmlns="" や xmlns:name="" という形式の宣言を表すものを除く。これらは、名前空間を宣言するのではなく、デフォルト名前空間やプリフィックスを宣言解除するものである。 有修飾名のプリフィックスを解釈するとき、このプロパティが、[namespace attributes] プロパティに優先して使われるべきである。人工情報セットの場合には、それらが一貫しない場合があるのである。
XML定義: attribute (Section 3.1, Start-Tags, End-Tags, and Empty-Element Tags)
XML文法: [41] Attribute (Section 3.1, Start-Tags, End-Tags, and Empty-Element Tags)
属性情報項目 (attribute information item) は、名前空間宣言であるものを含め、文書の中にある各要素の属性 (値指定されているものか、デフォルト指定されているもの) ごとに1個ずつある。しかしながら、名前空間宣言であるものは、ある要素の [attributes] プロパティではなく、 [namespace attributes] プロパティのメンバとして出現する。
DTDでデフォルト値を付けずに宣言され、要素の開始タグで値指定されていない属性は、属性情報項目で表されない。
属性情報項目は、以下のプロパティを有する。
XML定義: processing instruction (Section 2.6, Processing Instructions)
XML文法: [16] PI (Section 2.6, Processing Instructions)
処理命令情報項目 (processing instruction information item) は、文書の中にある処理命令ごとに1個ずつある。XML宣言や、外部解析対象外実体のテキスト宣言は、処理命令とみなされない。
処理命令情報項目は、以下のプロパティを有する。
xml:base
属性に対応する文法がないからである。
XML定義: Section 4.4.3, Included If Validating
未展開実体参照情報項目 (unexpanded entity reference information item) は、XMLプロセッサが外部解析対象実体が展開されていないことを示すのに用いることができる場所取りとして機能する。そうした情報項目は、要素の内容の内部にある外部一般実体への未展開参照ごとに1個ずつある。妥当性検証を行うXMLプロセッサや、妥当性検証を行わないがすべての外部一般実体を読むプロセッサは、妥当な文書について、未展開実体参照情報項目を生成することが決してないことになる。
未展開実体参照情報項目は、以下のプロパティを有する。
XML文法: [2] Char (Section 2.2, Characters)
文字情報項目 (character information item) は、リテラルであるか、文字参照としてであるか、CDATA節の内部であるかを問わず、文書に出現するデータ文字ごとに1個ずつある。
文字は、それぞれが論理的には別々の情報項目であるが、XMLアプリケーションが、必要や要望に応じて、文字をそれより大きなグループにまとめることは自由である。
文字情報項目は、以下のプロパティを有する。
XML定義: comment (Section 2.5, Comments)
XML文法: [15] Comment (Section 2.5, Comments)
注釈情報項目 (comment information item) は、DTDの中に出現するもの (これは表現されない。) を除き、元の文書の中にあるXML注釈ごとに1個ずつある。
注釈情報項目は、以下のプロパティを有する。
XML定義: document type declaration (section 2.8, Prolog and Document Type Declaration)
XML文法: [28] doctypedecl (section 2.8, Prolog and Document Type Declaration)
XML文書に文書型宣言がある場合、情報セットは、単一の文書型宣言情報項目 (document type declaration information item) を包含する。実体や記法は、文書型宣言情報項目ではなく、文書情報項目のプロパティとして与えられるので注意してほしい。
文書型宣言情報項目は、以下のプロパティを有する。
XML定義: entity (section 4, Physical Structures)
XML文法: [71] GEDecl (section 4.2, Entities)
解析対象外実体情報項目 (unparsed entity information item) は、DTDで宣言されている解析対象外一般実体ごとに1個ずつある。
解析対象外実体情報項目は、以下のプロパティを有する。
XML定義: notation (section 4.7, Notations)
XML文法: [82] NotationDecl (section 4.7, Notations)
記法情報項目 (notation information item) は、DTDで宣言されている記法ごとに1個ずつある。
記法情報項目は、以下のプロパティを有する。
文書の中にある要素は、それぞれが、その要素のスコープ内にある名前空間ごとに1個ずつの名前空間情報項目 (namespace information item) を有する。
名前空間情報項目は、以下のプロパティを有する。
xmlns:
プリフィックスに続く属性名の部分である。属性名が xmlns
だけであり、そのために宣言がデフォルト名前空間のものである場合、このプロパティは値をとらない。
情報セット仕様の目的は定義集合を提供することにあるから、適合性とは、それらの定義を利用する仕様書の特性であって、実装物の特性ではない。
情報セット仕様書を参照する仕様書は、つぎのことをしなければならない。
仕様書が、上記の人工情報セットの下で記述した非一貫性を有する情報セットを構築することを容認する場合、それらの非一貫性がどのように解釈されるべきかを記述してもよいし、また、情報セットのシリアル化に備える場合には、その記述をするべきである。
http://www.w3.org/TR/REC-xml-names
で入手可能。
http://www.w3.org/TR/xml-names11
で入手可能。
http://www.ietf.org/rfc/rfc2119.txt
で入手可能。
http://www.w3.org/TR/REC-xml
で入手可能。
http://www.w3.org/TR/xml11
で入手可能。
http://www.w3.org/TR/xmlbase
で入手可能。
http://www.w3.org/TR/REC-DOM-Level-1
で入手可能。
http://www.w3.org/TR/NOTE-xptr-infoset-liaison
で入手可能。
http://www.w3.org/2000/09/xppa
で入手可能。
http://www.w3.org/TR/xml-infoset-rdfs
で入手可能。
XML勧告 [XML] は、主としてXML文法に関するものであるけれども、XMLプロセッサについての具体的なレポーティングの必要条件もいくつか含まれている。
レポーティングの必要条件としては、エラーと文書情報とがある。ただし、エラーは、この仕様書の範囲外である。文書情報のレポーティングについての XMLの必要条件のすべてが、XML情報セット仕様に統合されている。括弧の中の番号は、XML勧告の節を指す。
以下のXML文書例を考えてみよう。
<?xml version="1.0"?> <msg:message doc:date="19990421" xmlns:doc="http://doc.example.org/namespaces/doc" xmlns:msg="http://message.example.org/" >Phone home!</msg:message>
このXML文書の情報セットは、以下の情報項目を内容とする。
http://message.example.org/
"、ローカル部が "message
"、プリフィックスが "msg
" の要素情報項目 1個
http://doc.example.org/namespaces/doc
"、ローカル名が "date
"、プリフィックスが "doc
"、既標準化値が "19990421
" の属性情報項目 1個
http://www.w3.org/XML/1998/namespace
, http://doc.example.org/namespaces/doc
, http://message.example.org/
という名前空間を表す名前空間情報項目 3個
以下の情報は、現行バージョンのXML情報セット仕様では表されない (このリストはもれなく網羅しようとしたものではない)。
<foo/>
と <foo></foo>
情報セットの形式面の特徴については、RDF Schema for the XML Information Set を見ること。