ディックのサイトです。
文字 休み ボット レンタル 祝し 日付 女性 イマジネーション 執筆 シンプル getTracker 伊藤忠 macromedia うれしい オンライン 住宅 展示 自信 応え 支店 勢多 辛口 画面 代表 ガール 独自 行わ 連帯 のぞい 社名

可能とは?/ ディック

[ 120] 拡張可能なマーク付け言語 (XML) 1.0
[引用サイト]  http://www.fxis.co.jp/xmlcafe/tmp/rec-xml.html

この標準情報(TR)の原勧告はW3Cメンバ及び作業グループによってレビューされ,W3C勧告として技術統括責任者によって承認された。この標準情報(TR)は,安定したものであって,参考資料として使用してもよく,他の文書から規定の参考資料として引用してもよい。勧告作成において,W3Cは,この規定を広く知らせ,普及させる役割をもつ。これによってWWWの機能と相互運用性が高まる。
XML文書は実体という記憶単位から成り,実体は構文解析されるデータ又は構文解析されないデータから成る。構文解析されるデータは,文字から成り,その一部は文字データを構成し,一部はマーク付けを構成する。マーク付けは,文書の記憶レイアウト及び論理構造を記述する符号とする。XMLは,記憶レイアウト及び論理構造についての制約条件を記述する機構を提供する。
XML文書を規定するために使用する用語は,この標準情報(TR)内で定義する。次に示す語句は,それらの用語を定義するため,及びXMLプロセサの動きを規定するために使用する。
適合する文書又はXMLプロセサは,記述されたとおりに動作することが要求され る。そうでなければ,エラーとする。
[Definition:] 適合するXMLプロセサが検出し,アプリケーションに報告しなければならないエラー。プロセサは,致命的エラーを発見したあとも,それ以降のエラーを探すためにデータ処理を続行し,見つかったエラーをアプリケーションに報告してもよい。エラー訂正をサポートするために,プロセサは,処理していないデータ(文字データ及びマーク付けの混在したもの。)を文書から取り出し,アプリケーションに渡してもよい。しかし,プロセサは,致命的エラーを一度でも検出したなら通常の処理を続行してはならない。つまり,プロセサは,文字データ及び文書の論理構造についての情報を,通常の方法でアプリケーションに渡し続けてはならない。
適合するソフトウエアは,記述されたとおりに振る舞ってもよい(may),又は振る舞わなくてはならない(must)(文章中の助動詞による。)。そのとおりに振る舞う場合は,記述された振舞いを選択又は拒否する手段をユーザに提供しなければならない。
すべての妥当な XML文書に適用する規則。妥当性制約の違反は,エラーとする。ユーザのオプション指定によっては,検証を行うXMLプロセサは,このエラーを報告しなければならない。
a) [Definition:] 文字列又は名前のマッチ 比較する二つの文字列又は名前は,同一でなければならない。ISO/IEC 10646において,複数の表現が可能な文字[例えば,合成形式及び基底文字+発音符(ダイアクリティカルマーク)形式]は,どちらの文字列も同じ表現のときに限り,マッチする。ユーザのオプション指定によっては,プロセサは,その文字を標準形に正規化してもよい。比較のとき ,大文字と小文字との区別をする。b) 文字列と文法中の規則とのマッチ ある生成規則から生成する言語に,ある文字列が属するとき,この文字列は,この生成規則にマッチするという。c) 内容と内容モデルとのマッチ ある要素が,制約"要素の妥当性"に示す意味で適合するとき,この要素は,その宣言にマッチするという。
XML文書は,論理構造及び物理構造をもつ。物理的には,文書は,実体という単位からなる。実体が他の実体を参照すれば,参照された実体も文書の一部になる。
文書は,“ルート”すなわち文書実体から始まる。論理的には,文書は,宣言,要素,コメント,文字参照及び処理命令を含み,これらすべては,文書内で明示的なマーク付けによって示す。論理構造及び物理構造は,"4.3.2 整形式の解析対象実体"に示すとおりに,厳密に入れ子になっていなければならない。
b) [Definition:] ルート又は文書要素という要素が一つだけ存在し,これは,他の要素の内容に含まれない。これ以外のすべての要素は,その開始タグが他 の要素の内容に含まれれば,対応する終了タグも同じ要素の内容に含まれる。つまり,要素は,開始タグ及び終了タグによって区切られ,入れ子構造をなす 。
便宜上,文字を,字,数字又は他の文字に分類する。字は,アルファベット的,若しくは表音的である基底文字(一つ以上の結合文字が,後に続くこともある。),又は統合漢字から成る。各クラスにおける実際の文字についての完全な定義は,"B. 文字クラス"に示す。
備考: XMLの名前の中のコロンは,名前空間での実験のために予約する。コロンの意味は,将来のある時点で標準化するものとし,そのときには,実験的な目的でコロンを使用する文書を更新する必要が生じる可能性がある。XMLで採用する名前空間の機構が,区切り子として実際にコロンを使用するという保証はない。事実上,これは,名前空間の実験の一つとして以外には,XMLの名前の中でコロンを使用しないほうがよいことを意味する。しかし,XMLプロセサは,名前文字としてコロンを受け付けることが望ましい。
[Definition:] コメント は,他のマーク付けの外ならば,文書のどこに現れてもよい。さらに,文書型宣言の中で,文法が許す場所に現れてもよい。コメントは,文書の文字データの一部ではない。XMLプロセサは,アプリケーションがコメントのテキストを取り出すことを可能としてもよいが,そうしなくともよい。 互換性のためには,文字列
この標準情報(TR)のこの版に適合することを示すためには,版番号 "1.0" を使用しなければならない。ある文書が,この標準情報(TR)のこの版に適合しないとき,値"1.0"を使用するのは,エラーとする。この標準情報(TR)の今後の版に"1.0"以外の値を付与することが,XML作業グループの意図だが,XMLの将来の版を作成することを確約するわけではなく,作成したとしても番号付けについて,特定の方法を使用することを確約するわけでもない。将来の版を作成する可能性があるので,必要な場合に自動的な版の認識を可能とするため,この構成子を提供する。プロセサは,それがサポートしていない版番号のついた文書を受け取ったならエラーを通知してもよい。
XML文書内のマーク付けの機能は,記憶構造及び論理構造を記述すること,並びに属性及び属性値の対を論理構造に関連づけることにある。XMLは,論理構造についての制約条件を定義するため,及びあらかじめ定義された記憶単位を使用するための機構として文書型宣言を提供する。
XMLの文書型宣言は,ある文書クラスのための文法を記述するマーク付け宣言を含むか,参照する。この文法を,文書型定義又はDTDという。文書型宣言は,マーク付け宣言を含んだ外部サブセット(特別な種類の外部実体)を参照することができ,又は内部サブセットにマーク付け宣言を直接含むこともできる。外部サブセットと内部サブセットの両方を使うこともできる。ある文書のDTDは,両方のサブセットをまとめたものとして構成される。
マーク付け宣言は,要素型宣言, 属性リスト宣言,実体宣言又は記法宣言とする。次に示す整形式制約及び妥当性制約に規定する通り,これらの宣言は,パラメタ実体内に全体又は一部が含まれてもよい。詳しい規定は,"4. 物理構造"を参照のこと。
パラメタ実体の置換テキストは,マーク付け宣言内において,厳密に入れ子になっていなければならない。つまり,マーク付け宣言(markupdecl)の最初又は最後の文字が,パラメタ実体参照の指し示す置換テキストに含まれれば,両方とも同じ置換テキストに含まれなければならない。
DTDの内部サブセットでは,パラメタ実体参照は,マーク付け宣言が出現可能な場所だけに出現できる。マーク付け宣言の一部としては出現できない。この制約は,外部パラメタ実体又は外部サブセットでの参照には適用しない。
内部サブセットのときと同様に,外部サブセットと,DTDにおいて参照する任意の外部パラメタ実体とは,非終端記号markupdeclによって許される型の一連の完全なマーク付け宣言で構成されなければならない。マーク付け宣言の間には,空白又はパラメタ実体参照を置いてもよい。外部サブセット又は外部パラメタ実体の内容の一部は,条件付きセクションを使用して無視してもよいが,内部サブセットではこれは許されない。
外部サブセット及び外部パラメタ実体は,その中では,パラメタ実体参照がマーク付け宣言の間だけでなく,マーク付け宣言の内でも認められる,という点でも内部サブセットとは異なる。
外部サブセット及び内部サブセットの両方を使用するときは,内部サブセットが外部サブセットより先に出現したと見なす。これは,内部サブセットの実体及び属性リスト宣言が,外部サブセットの実体及び属性リスト宣言に優先するという効果をもたらす。
XMLプロセサは,アプリケーションに文書の内容を渡すが,マーク付け宣言は,この内容に影響を与えることがある。例えば,属性のデフォルト値及び実体宣言は影響を与える。スタンドアロン文書宣言は,XML宣言の一部分として出現することができ,影響を与えるマーク付け宣言が文書実体の外部に出現するかどうかを示す。
スタンドアロン文書宣言においては, "yes"の値は,文書実体の外部に(DTDの外部サブセット内に,又は内部サブセットから参照される外部パラメタ実体内に),XMLプロセサからアプリケーションへと渡される情報に影響するマーク付け宣言が存在しないことを意味する。"no"の値は,その外部マーク付け宣言が存在するか,又は存在する可能性があることを意味する。スタンドアロン文書宣言は,その宣言が文書外部に存在するかどうかを示すだけに注意すること。外部実体への参照が文書内に存在していても,その実体が内部的に宣言されているときは,文書のスタンドアロンの値には影響を与えない。
外部にマーク付け宣言が存在しなければ,スタンドアロン文書宣言は意味をもたない。外部にマーク付け宣言は存在するが,スタンドアロン文書宣言が存在しない場合は,"no"の値が設定されているものとする。
スタンドアロン文書宣言は,何らかの外部マーク付け宣言が次のいずれかを宣言しているときは,値 "no"を取らなければならない。
a) デフォルト値付きの属性であって,この属性が適用される要素が,属性値を 指定せずに文書内に現れるもの。
c) 値が正規化の対象となる属性であって,正規化の結果として変化する値が文書内で属性に指定されているもの。
XML文書を編集するときは,マーク付けを目立たせ読みやすくするために,“空白”(スペース,タブ及び空白行。この標準情報(TR)では,非終端記号のSで表す。)を使うと便利なことが多い。これらの空白は,配布する版の文書の一部に含めることを普通は意図していない。しかし,“意味のある”空白であって,配布する版に保持されなければならないものも多い。例えば,詩及びソースコードにおける空白がこれにあたる。
XMLプロセサは,文書内のマーク付け以外のすべての文字を,変更せずにそのままアプリケーションに渡さなければならない。妥当性を検証するXMLプロセサは,これらの文字の中でどの文字が要素内容に出現する空白を構成するかをアプリケーション側に伝えなければならない。
文書のルート要素については,この属性の値を指定するか,又はこの属性のデフォルト値がある場合を除いては,アプリケーションによる空白の取扱いについて,いかなる意図も示さないと解釈する。
アプリケーションの処理を簡単にするため,外部解析対象実体又は内部解析対象実体のリテラル実体値が,"#xD#xA"の2文字の連続とするリテラル又は#xDの単独のリテラルを含む場合に,XMLプロセサは,アプリケーションに単一の文字#xAだけを渡さなければならない(この処理は,入力内に存在する改行コードを構文解析の前に正規化することによって,容易に実現できる。)。
言語コードは,小文字で表記する慣行があり,国コードは(存在するならば)大文字での表記する慣行がある。しかし,XML文書内における他の名前とは異なり,これらの値については,大文字及び小文字の区別をしないことに注意すること。
必要ならば,特定のデフォルト値を与えてもよい。英語を母語とする学生用のフランス語の詩集では,説明及び注を英語で記述すれば,xml:lang属性を次のとおりに宣言することとなる。
c) 宣言が Mixedにマッチし,要素の内容が文字データ及び子要素からなる。子要素の要素型は,要素の内容モデルに出現する名前にマッチする。
空要素タグは,内容をもたない任意の要素の表現に利用できる。空要素タグで表現する要素を,キーワードEMPTYを用いて宣言しなくてもよい。 相互運用性のためには,空要素タグは,EMPTYとして宣言された要素には必ず使用しなければならず,またこれ以外の要素には使用しない。
妥当性を保証するため,要素型宣言及び属性リスト宣言を用いてXML文書の要素の構造に制約を加えることができる。要素型宣言は,要素の
要素型宣言は,要素の子として出現可能な要素型について,制約を加えることが多い。ユーザのオプション指定によっては,要素型宣言をもたない要素型が他の要素型宣言によって参照されれば,XMLプロセサは警告を出してもよい。しかし,これはエラーとはしない。
この場合,内容モデルが制約となる。内容モデルは,子要素の型及び子要素の出現順序を制御する簡単な文法とする。この文法は,内容素子(cp)から成る。内容素子は,名前,内容素子の選択リスト又は内容素子の列リストから構成される。
ここで,Nameは,子として出現してよい要素の型を示す。この文法で選択リストが現れる位置では,選択リスト内のいずれの内容素子も要素内容の中に現れてよい。列リストに現れる内容素子は,リストで指定する順番のとおりに,要素内容に現れなければならない。名前又はリストの後に出現するオプションの文字は,リスト内の要素又は内容素子が,1回以上任意の回数(+),0回以上任意の回数(*)又は0回若しくは1回(?)出現可能なことを規定する。この演算子がない場合は要素又は内容素子が正確に1度だけ現われなくてはならないことを意味する。 ここで示す構文及び意味は,この標準情報(TR)における生成規則で用いるものと同一とする。
要素の内容が内容モデルにマッチするのは,列,選択及び繰返し演算子に従って,内容の中の要素と内容モデル内の要素型とをマッチさせながら,内容モデル内の一つのパスをたどれるときに限る。互換性のため,文書内の要素が,内容モデルにおける要素型の複数の出現位置とマッチすることは,エラーとする。詳細な規定については,"E. 決定的内容モデル"を参照。
パラメタ実体の置換テキストは,かっこで囲まれたグループによって,厳密な入れ子を構成しなければならない。つまり,選択,列又は混在部品に,開きかっこ又は閉じかっこのいずれか一方が
混在内容内容に含まれれば,その置換テキストは空でないことが望ましく,置換テキストの先頭及び末尾の空白でない文字は,コネクタ(|又は,)でない方がよい。
この場合,子要素の型についての制約が存在してもよいが,子要素の順序又は出現回数についての制約は存在しない。
属性は,名前及び値の対を要素に関連付けるために用いる。属性指定は,開始タグ又は空要素タグ内でだけ可能とする。したがって,属性指定を認識するための生成規則は,"3.1 開始タグ,終了タグ及び空要素タグ"に示されている。属性リスト宣言は,次の目的で用いる。
属性リスト宣言は,ある要素型と関連付けられた各属性に対し,名前,データ型及び(存在すれば)デフォルト値を規定する。
ある要素に対して,複数のAttlistDeclを与える場合,これらすべての内容はマージする。ある要素型の同じ属性に,複数の定義を与える場合には,最初の宣言を有効とし,他の宣言は無視する。相互運用性のためには,DTDの作成者は,ある要素型には高々一つの属性リスト宣言しか与えない,ある属性名には高々一つの属性定義しか与えない,及びすべての属性リスト宣言には少なくとも一つの属性定義を与える,という選択をしてもよい。相互運用性のためには,XMLプロセサは,ユーザのオプション指定によっては,ある要素型に複数の属性リスト宣言を与えたり,ある属性に複数の属性定義を与えたりしたときに,警告を出してもよい。しかし,これは,エラーとはしない。
XMLの属性の型は,3種類とする。これらは,文字列型,トークン化型及び列挙型とする。文字列型は,値として任意のリテラル文字列をとる。トークン化型は,字句及び意味に関して,次に示す様々な制約をもつ。
この型の値は,宣言に含まれる幾つかの記法の名前の一つとマッチしなければならない。つまり,宣言に含まれる記法名は,すべて宣言されていなければならない。
属性宣言は,属性の指定が必須かどうかについての情報を与える。必須でない場合には,文書内で属性が指定されていないとき,XMLプロセサがどう処理しなければならないか又は処理するほうがいいかの情報も与える。
デフォルトの宣言が#REQUIREDキーワードの場合,属性リスト宣言で参照した要素型のすべての要素で,その属性を指定しなければならない。
属性が#FIXEDキーワードで宣言されたデフォルト値を持つ場合,その属性のインスタンスはデフォルト値にマッチしなければならない。
XMLプロセサは,属性値をアプリケーションに渡す前,または,妥当性を判定する前に,次のとおりに正規化しなければならない。
[訳注(これは原文にはない)] 以下の箇条書きは,"と"の間(もしくは'と'の間)の文字の並びに対して繰り返し実行される条件分岐である。一度実行されるたびに,正規化された文字列が先頭から少しずつ構築されていく。
妥当性を検証しないパーサは,宣言が見つからない属性は,すべて,CDATAを宣言しているとして扱うものとする。
条件付きセクションとは,文書型宣言の外部サブセットの一部であって,制御キーワードの指定によって,DTDの論理構造に含めたり,除いたりする部分とする。
条件付きセクションは,DTDの内部サブセット及び外部サブセットと同様に,完全な宣言,コメント,処理命令又は入れ子になった条件付きセクションを,いくつか含んでよい。これらの間に,空白が現れてもよい。
条件付きセクションのキーワードがINCLUDEならば,条件付きセクションの内容はDTDの一部である。条件付きセクションのキーワードがIGNOREならば,条件付きセクションの内容は論理的にはDTDの一部ではない。構文解析を正しく行うためには,無視する条件付きセクション(IGNORE)に関しても,内容を読まなければならないことに注意すること。これは,入れ子になった条件付きセクションを見つけ,(無視する)最も外側の条件付きセクションを正しく検出することを目的とする。キーワードをINCLUDEとする小さな条件付きセクションが,キーワードをIGNOREとするより大きな条件付きセクションに含まれるならば,外側及び内側の条件付きセクションの両方とも無視する。
条件付きセクションのキーワードがパラメタ実体参照ならば,XMLプロセサは条件付きセクションの扱いを判断する前に,このパラメタ実体を展開しなければならない。
各XML文書は,文書実体と呼ぶ実体を一つもつ。XMLプロセサは,この文書実体から処理を開始する。文書実体が,文書のすべてを含んでもよい。
解析対象外実体は,内容がテキストでもそうでなくともよいリソースとする。テキストの場合,XMLでなくともよい。各解析対象外実体には,記法が関連付けられ,この記法は,名前で特定する。XMLプロセサが実体や記法の識別子をアプリケーションに渡すという要件以外は,XMLは解析対象外実体の内容を制限しない。
quot を宣言する必要はない。パラメタ実体の場合は,宣言は,参照に先行しなければならない。同様に,一般実体の場合は,属性リスト宣言のデフォルト値内での参照より先に,宣言が現れなければならない。
外部サブセット又は外部パラメタ実体で実体を宣言するとき,妥当性を検証しないプロセサが,宣言を読み,処理することを義務づけないことに注意。それらの文書では,実体は宣言されなければならないという規則は,standalone='yes'の場合のみ,整形式制約となる。
quotを宣言することが望ましい。パラメタ実体の場合は,宣言は,参照に先行しなければならない。同様に,一般実体の場合は,属性リスト宣言のデフォルト値内での参照よりも先に,宣言が現れなければならない。
実体の内容を取り出すXMLプロセサは,この公開識別子を用いて,代わりのURIの生成を試みてもよい。XMLプロセサがこれに失敗した場合は,システムリテラルとして指定したURIを用いなければならない。マッチする前に,公開識別子内にある空白文字からなる文字列は,すべて単一のスペース文字(#x20)に正規化しなければならず,先頭及び末尾の空白文字はすべて削除しなければならない。
テキスト宣言は,そのままの形で現れなければならず,解析対象実体への参照を経由してはならない。外部解析対象実体において,テキスト宣言は,先頭以外のいかなる位置にも出現しない。
置換テキストが,ラベルcontentをもつ生成規則にマッチすれば,内部の一般解析対象実体は,整形式とする。すべての内部のパラメタ実体は,定義から整形式になる。
実体はすべて整形式なので,XML文書の論理的及び物理的構造は,厳密に入れ子となる。開始タグ,終了タグ,空要素タグ,要素,コメント,処理命令,文字参照及び実体参照が,一つの実体で開始し,別の実体で終了することはない。
外部の伝送プロトコル(すなわち,HTTP, MIMEなど)で与えられる情報が存在しないとき,XMLプロセサに渡された実体が,符号化宣言を含むにもかかわらず,宣言で示したもの以外の方式で符号化されている場合,符号化宣言が外部実体の最初以外の位置に出現した場合,又はバイト順マークでも符号化宣言でも始まらない実体が,UTF-8以外の符号化方式を使用した場合は,エラーとする。ASCIIはUTF-8のサブセットなので,通常のASCIIの実体は厳密には符号化宣言を必要としないことに注意。
次の表に,文字参照,実体参照及び解析対象外実体の呼出しが現れる文脈,並びに,それぞれの場合におけるXMLプロセサに要求される振舞いを要約する。一番左の列のラベルは,参照が現れる文脈を示す。
DTDの外では,%文字は,いかなる特別な意味ももたない。したがって,DTDの中ではパラメタ実体参照として認識するものであっても,contentの中ではマーク付けとしては認識しない。同様に,適切に宣言した属性の値の中に現れる場合を除き,解析対象外実体の名前は認識しない。
[Definition:] 実体参照を処理するには,その置換テキストを取り出し,処理する。参照自体の代わりに,参照があった位置で,文書の一部として含まれるものとして取り込む。置換テキストは,文字データ及び(パラメタ実体を除く。)マーク付けのいずれを含んでもよく,これらは,通常の方法で認識されなければならない。ただし,マーク付けの区切り子を別扱いするために用いる実体(amp,
文書の妥当性を検証するには,XMLプロセサは解析対象実体への参照を認識したとき,その置換テキストを取り込まなければならない。実体が外部実体であって,XML文書の妥当性を検証しないときは,実体の置換テキストを取り込んでもよいが,取り込むことを義務づけられてはいない。妥当性を検証しないパーサが置換テキストを取り込まない場合,実体を認識したが,読み込まなかったことをアプリケーションに通知しなければならない。
この取決めは,SGML及びXMLの実体の機構が提供する自動取込み機能が,文書作成時のモジュール化を主な目的として設計されており,その他のアプリケーション(特に,文書のブラウジング)には,必ずしも適切ではない,という認識による。例えば,ブラウザは外部解析対象実体への参照を見つけると,その実体が存在するという表示だけを行い,表示を要求されたときにだけ,内容を取り出すかもしれない。
実体参照が属性値の中で現れたとき,または,パラメタ実体への参照がリテラル実体値の中で現れたとき,置換テキストは,参照自体の代わりに,参照があった位置に文書の一部としてあったものとして処理される。ただし,置換テキストの中の一重引用符又は二重引用符文字は,常に通常の文字データとして扱われ,リテラルを終了させることはない。例えば,次の文書例は整形式である。
[訳注(これは原文にはない)] 一行目は原規定ではパラメタ実体となっているが明らかな誤りなので修正した。
解析対象外実体の名前が,ENTITY型又はENTITIES型の属性値においてトークンとして現れたとき,妥当性を検証するプロセサは,アプリケーションに対して,その実体及び関連する記法のシステム識別子並びに(存在すれば)公開識別子を通知しなければならない。
外部解析対象実体の場合と同様に,パラメタ実体は,妥当性を検証するときだけ取り込む必要がある。パラメタ実体参照をDTD内に認識して取り込むとき,その置換テキストは,その前後に一つのスペース文字(#x20)の付加によって引き伸ばされる。パラメタ実体の置換テキストがDTD内の文法的トークンを完全に含むようにすることを,この規程は意図している。
内部実体宣言内で与えるリテラル実体値(EntityValue)は,文字参照,パラメタ実体参照及び一般実体参照を含んでもよい。これらの参照は,リテラル実体値内に完全に含まれていなければならない。展開する実際の置換テキスト(先に示したもの)は,参照するパラメタ実体の置換テキストを含み,リテラル実体値内での文字参照の代わりに参照した文字を含む。しかし,一般実体参照はそのまま残し, 展開してはならない。
不等号(小なり),アンド記号及び他の区切り子を別扱いするには実体参照及び文字参照のどちらも使用できる。いくつかの一般実体(amp,
すべてのXMLプロセサは,宣言されているかどうかに関係なく,これらの実体を認識しなくてはならない。相互運用性のためには,妥当なXML文書は,これらの実体を使用する前に他の実体と同様に宣言する。実体を宣言する場合は,別扱いする1文字を置換テキストとして指定した内部実体,又は,その文字への文字参照を指定した内部実体として,次のとおりに宣言しなければならない。
記法は,解析対象外実体の形式,記法属性を持つ要素の形式,または,処理命令の対象とするアプリケーションを特定する名前とする。
記法宣言は,記法の名前及び外部識別子を提供する。この名前は,外部実体宣言,属性リスト宣言,及び属性指定に用いる。外部識別子は,与えられた記法のデータを処理できるソフトウェア(ヘルパアプリケーションなど)を,XMLプロセサ又はクライアントアプリケーションが探すために利用できる。
XMLプロセサは,宣言されていて,属性値,属性定義又は実体宣言で参照されているすべての記法について,XMLプロセサは,記法の名前及び外部識別子をアプリケーションに提供しなければならない。さらに,外部識別子を,システム識別子,ファイル名又はその他の情報に展開してもよく,これらを用いて,アプリケーションは,その記法のデータを処理するプロセサを起動する。しかし,XMLプロセサ又はアプリケーションが動作するシステムでは利用できない記法を,XML文書が宣言し参照しても,これは,エラーとはしない。
妥当性を検証するプロセサも妥当性を検証しないプロセサも,読み込んだ文書実体及び他のすべての解析対象実体において,この標準情報(TR)の整形式制約への違反を報告しなければならない。
これを実現するために,妥当性を検証するXMLプロセサは,DTD全体と文書内で参照されているすべての外部解析対象実体とを読み込んで処理しなければならない。
妥当性を検証しないプロセサは,整形式であることを確認するために,DTDの内部サブセット全体を含めた文書実体を調べることだけが義務づけられている。[Definition:] 文書の妥当性を確認する必要はないが,読み込んでいないパラメタ実体への参照が最初に起きるまでに読み込んだDTDの内部サブセットとパラメタ実体とに現れるすべての宣言を処理しなければならない。すなわち,属性値を正規化し,内部実体の置換テキストを取込み,デフォルトの属性値を与えるために,これらの宣言にある情報を使用しなければならない。
実体の宣言は上書きされる可能性があるので,妥当性を検証しないプロセサは,読み込んでいないパラメタ実体への参照より後に現れた実体宣言及び属性リスト宣言を処理してはならない。
妥当性を検証するXMLプロセサの振舞いはほとんど予測可能である。すなわち,文書のすべての断片を読み込み,整形式及び妥当性に対するすべての違反を報告しなければならない。妥当性を検証しないプロセサに必要とされることはそれより少ない。すなわち,文書実体以外の文書の断片を読み込む必要はない。したがって,XMLプロセサのユーザに対して重要な二つ効果をもつ。
ある種の整形式のエラー,特に,外部実体を読まなければ検出できないエラーは,妥当性を検証しないプロセサでは検出しなくてもよい。例えば,"4.4 XMLプロセサによる実体及び参照の扱い"で禁止として説明されているいくつかの場合,並びに実体が宣言されていること,解析対象実体,及び再帰なしという見出しが付けられた制約が挙げられる。
プロセサからアプリケーションに渡される情報は,プロセサがパラメタ実体及び外部実体を読み込むかどうかで違ってくる。例えば,妥当性を検証しないプロセサは,属性値を正規化したり,内部実体の置換テキストを取込んだり,デフォルトの属性値を与えたりする必要はない。これらを行なうかどうかは,外部実体及びパラメタ実体内での宣言を既に読み込んでいるかどうかによる。
異なるXMLプロセサ間での相互運用性を最も高めるためには,妥当性を検証しないプロセサを使用するアプリケーションは,そのようなプロセサでは必要とされない振舞いに依存すべきではない。外部実体で宣言されている属性のデフォルトや内部実体を使用するような場合は,妥当性を検証するプロセサを使用する。
記号は,正規表現で定義するときは大文字で始め,そうでなければ小文字で始める。リテラル文字列は引用符で囲む。
e) 次の文字は,名前開始文字として扱う。これは,プロパティファイルが,これらの文字をアルファベットに類似すると見なすことによる。それらは
規則及びその効果をより詳細に示すため,さらに複雑な例を示す。次の例で,行番号は参照の便宜のためだけに付ける。
XMLの符号化宣言は,各実体の内部ラベルとして機能し,どの文字符号化方式を使用するかを示す。しかし,XMLプロセサは内部ラベルを読む前にどの文字符号化方式を使われているかを知る必要があり,これが,内部ラベルが示そうとしていることに他ならない。一般的には,これは絶望的な状態となる。しかし,XMLにおいては,完全には絶望的ではない。これは,XMLが次の二つの点で一般的な場合に対する制限を加えていることによる。一つの制限は,どの実装も有限個の文字符号化方式だけをサポートするものと見なす。他の一つは,XMLの符号化宣言の位置及び内容を制限して,各実体で使用する文字符号化方式の自動検出を可能にする。また,多くの場合に,XMLのデータストリームに加え,他の情報が利用できる。ここでは,XMLの実体がプロセサに渡されるとき,(外部)情報を伴うかどうかによって,二つの場合に分ける。まず最初の場合を示す。
符号化宣言の内容をASCII文字に限定しているので,どの系統の符号化方式が使用されているかを検出すれば,プロセサは符号化宣言全体を正確に読み込むことができる。現実問題として,広く使用されている文字符号化方式は前述の系統のいずれかにあてはまるので,オペレーティングシステム又は伝送プロトコルが与える外部情報を信頼できないときでも,内部ラベルで文字符号化方式をかなり正確に示すことがXML符号化宣言によって可能となる。
プロセサが文書の符号化方式を検出しさえすれば,それぞれの場合に対して別の入力ルーチンを呼び出すか,又は入力する各文字に対し適切な変換関数を呼び出すことによって,適切に動作することができる。
自分自体にラベル付けをするいかなるシステムでも同様だが,ソフトウェアが,符号化宣言を更新せずに実体の文字集合又は符号化方式を変えれば,XMLの符号化宣言は機能しない。文字符号化ルーチンの実装者は,実体のラベル付けに使用する内部及び外部の情報の正確さの保証に注意すべきである。
2番目の場合は,XMLの実体の他に,符号化方式についての情報が存在するときである。いくつかのファイルシステム及びネットワークプロトコルでは,その符号化方式についての情報が存在する。複数の情報が利用できるとき,それらの相対的な優先度と,それらが矛盾したときの望ましい処理方法とは,XMLの配送に使用するより高水準のプロトコルの一部として規定するのがよい。例えば,内部ラベル及び外部ヘッダに存在するMIME形式のラベルの相対的な優先度についての規則は,MIME型text/xml及びapplication/xmlを定義するRFC文書の一部となるのが望ましい。しかし,相互運用性のため,次の規則を推薦する。
a) XMLの実体がファイルに存在すれば,バイト順マーク及び符号化宣言PIは,(存在すれば)文字符号化方式を決定するために使用する。他のすべてのヒューリスティック及び情報は,エラー回復のためだけに用いる。

 

戻る

ディックのサイトです。

ディックのサイトです。