この規格ページの目次
26
X 4159 : 2005
は,致命的誤りとする。ASCIIはUTF-8のサブセットなので,通常のASCIIの実体は厳密には符号化宣言
を必要としないことに注意。
TextDeclが外部実体の先頭以外の場所に出現することは,致命的な誤りとする。
処理できない符号化を使用した実体をXMLプロセサが発見したときは,致命的な誤りとする。XML実
体が(デフォルトで,符号化宣言によって,又はより高次のプロトコルによって)ある符号化であると確定
されるが,その符号化としては正しくないバイト列を含む場合は,致命的な誤りとする。特に,UTF-8で
符号化された実体が,不正であるとUnicode 3.1で定義されたコードユニット列を含むことは致命的な誤り
とする。上位のプロトコルによって符号化が決まらない場合,符号化宣言を含まないXML 実体が,正し
いUTF-8又はUTF-16の内容をもたないときも,致命的な誤りとする。
符号化宣言を含むテキスト宣言の例を次に示す。
<・xml encoding='UTF-8'・>
<・xml encoding='EUC-JP'・>
4.4 XMLプロセサによる実体及び参照の扱い 次の表に,文字参照,実体参照及び解析対象外実体の呼
出しが現れる文脈,並びに,それぞれの場合におけるXMLプロセサに要求される振る舞いを要約する。一
番左の列のラベルは,参照が現れる文脈を示す。
内容における参照
要素の開始タグ及び終了タグの間の任意の場所での参照。非終端記号contentに対応する。
属性値における参照
開始タグの属性の値,又は属性宣言におけるデフォルト値のいずれかでの参照。非終端記号AttValue
に対応する。
属性値として出現
参照ではなく,Nameとして出現。ENTITY型として宣言した属性の値として出現するか,又は
ENTITIES型として宣言した属性の値におけるスペースで区切られたトークンの一つとして出現する。
実体値における参照
実体の宣言における,パラメタ実体又は内部実体のリテラル実体値の中での参照。非終端記号
EntityValueに対応する。
DTDにおける参照
DTDの内部又は外部サブセットのいずれかの中に現われる参照。ただし,EntityValue,AttValue,PI,
Comment,SystemLiteral,PubidLiteral又は無視される条件付きセクションの内容の外側にあるもの(3.4
条件付きセクションを参照)に限る。
表 2 実体及び参照の扱い
実体の型
外部解析対象 解析対象外 文字
パラメタ 内部一般 実体一般 実体
内容での参照 認識 しない 取込み 検証のために 禁止 取込み
取込み
属性値での参照 認識 しない リテラル内で 禁止 禁止 取込み
の取込み
属性値として出現 認識 しない 禁止 禁止 通知 認識しない
――――― [JIS X 4159 pdf 31] ―――――
27
X 4159 : 2005
実体値での参照 リテラル内 処理しない 処理しない 誤り 取込み
での取込み
DTDでの参照 PEとして 禁止 禁止 禁止 禁止
取込み
4.4.1 “認識しない” DTDの外では,%文字は,いかなる特別な意味ももたない。したがって,DTD
の中ではパラメタ実体参照として認識するものであっても,contentの中ではマーク付けとしては認識しな
い。同様に,適切に宣言した属性の値の中に現れる場合を除き,解析対象外実体の名前は認識しない。
4.4.2 “取込み” 実体参照を処理するには,その置換テキストを取り出し,処理する。参照自体の代わ
りに,参照があった位置で,文書の一部として含まれるものとして取り込む。置換テキストは,文字デー
タ及び(パラメタ実体以外の)マーク付けのいずれを含んでもよく,これらは,通常の方法で認識されなけ
ればならない (文字列"AT&T;"は,"AT&T;"に展開され,残されたアンパサンドは,実体参照の区切り
子としては認識しない。)。文字参照は,番号で示した文字を参照自体の代わりに取り込む。
4.4.3 “検証のために取込み” 文書の妥当性を検証するには,XMLプロセサは,解析対象実体への参
照を認識したとき,その置換テキストを取り込まなければならない。実体が外部実体であって,XML文書
の妥当性を検証しないときは,実体の置換テキストを取り込んでもよいが,取り込むことを義務づけられ
てはいない。妥当性を検証しないプロセサが置換テキストを取り込まない場合,実体を認識したが,読み
込まなかったことを応用プログラムに通知しなければならない。
この取決めは,SGML及びXMLの実体の機構が提供する自動取込み機能が,文書作成時のモジュール
化を主な目的として設計されており,その他の応用プログラム(特に,文書のブラウジング)には,必ずし
も適切ではない,という認識による。例えば,ブラウザは外部解析対象実体への参照を見つけると,その
実体が存在するという表示だけを行い,表示を要求されたときにだけ,内容を取り出すかもしれない。
4.4.4 “禁止” 次のものは禁止されており,致命的な誤りとする。
a) 解析対象外実体への参照の出現。ただし実体宣言におけるEntityValueにおける出現は除く。
b) TDのEntityValue又はAttValue以外の部分における,文字参照又は一般実体への参照の出現。
c) 属性値内の外部実体への参照の出現。
4.4.5 リテラル内での取込み 実体参照が属性値の中で現れたとき,又は,パラメタ実体への参照がリテ
ラル実体値の中で現れたとき,置換テキストは,参照自体の代わりに,参照があった位置に文書の一部と
してあったものとして処理される。ただし,置換テキストの中の一重引用符又は二重引用符文字は,常に
通常の文字データとして扱われ,リテラルを終了させることはない。例えば,次の文書例は整形式である。
<!ENTITY % YN '"Yes"' >
<!ENTITY WhatHeSaid "He said %YN;" >
一方,次の例は整形式ではない。
<!ENTITY EndAttr "27'" >
<element attribute='a-&EndAttr;>
4.4.6 “通知” 解析対象外実体の名前が,ENTITY型又はENTITIES型の属性値においてトークンとし
て現れたとき,妥当性を検証するプロセサは,応用プログラムに対して,その実体及び関連する記法のシ
ステム識別子並びに(存在すれば)公開識別子を通知しなければならない。
4.4.7 “処理しない” 一般実体参照が,実体宣言におけるEntityValue内に現れるとき,一般実体参照は
処理されないで,そのまま残る。
――――― [JIS X 4159 pdf 32] ―――――
28
X 4159 : 2005
4.4.8 “PEとして取込み” 外部解析対象実体の場合と同様に,パラメタ実体は,妥当性を検証すると
きだけ取り込む必要がある。パラメタ実体参照をDTD内に認識して取り込むとき,その置換テキストは,
その前後に一つのスペース文字(#x20)の付加によって引き伸ばされる。パラメタ実体の置換テキストが
DTD内の文法的トークンを完全に含むようにすることを,この規定は意図している。この振る舞いは,実
体値の中でのパラメタ実体参照には適用されない。この場合については4.4.5 リテラル内での取込みで記
述する。
4.4.9 “誤り” 実体宣言におけるEntityValueにおいて解析対象外実体への参照が出現することは,誤り
とする。
4.5 実体置換テキストの構築 実体の取扱いの規定で,実体値を二つの形式に区別することは役に立つ。
内部実体の場合,リテラル実体値は,実体宣言内に実際に存在する,引用符で囲まれた文字列とする。こ
れは,非終端記号EntityValueとマッチする。外部実体の場合,リテラル実体値は,その実体に含まれるテ
キストそのままとする。 内部実体の場合,置換テキストは,文字参照及びパラメタ実体参照の置換え後に
おける,実体の内容とする。外部実体の場合,置換テキストは,実体の内容とする。ただし,テキスト宣
言は(もしあるなら)取り除く(周辺の空白文字は除かない。)。しかし,文字参照又はパラメタ実体参照は置
き換えないものとする。
内部実体宣言内で与えるリテラル実体値(EntityValue)は,文字参照,パラメタ実体参照及び一般実体参照
を含んでもよい。これらの参照は,リテラル実体値内に完全に含まれていなければならない。先に示した
とおりに取り込まれる(又は リテラル内で取込まれる)実際の置換テキストは,参照されるパラメタ実体の
置換テキストを含み,リテラル実体値に含まれる文字参照の代わりにそれが表す文字を含む。しかし,一
般実体参照はそのまま残し,展開してはならない。例えば,次の宣言を与えたとする。
<!ENTITY % pub "Éditions Gallimard" >
<!ENTITY rights "All rights reserved" >
<!ENTITY book "La Peste: Albert Camus,
© 1947 %pub;. &rights;" >
実体の置換テキスト"book"は,次のとおりとなる。
La Peste: Albert Camus,
c 1947 Editions Gallimard. &rights;
参照"&book;"が文書の内容又は属性値内に出現すれば,一般実体参照"&rights;"は展開される。
これらの単純な規則は,複雑な相互作用をもちうる。 難しい例についての詳細は,附属書4. 実体参照
及び文字参照の展開を参照のこと。
4.6 定義済み実体 不等号(より小),アンパサンド及び他の区切り子を別扱いするには実体参照及び文字
参照のどちらも使用できる。幾つかの一般実体(amp,lt,gt,apos,quot)をこの目的のために使用する。
番号による文字参照も,この目的のために用意されている。文字参照は,認識されると直ちに展開され,
文字データとして扱われるので,番号による文字参照"<"及び "&"は,文字データ内に出現する <
及び&を別扱いするために使用できる。
すべてのXMLプロセサは,宣言されているかどうかに関係なく,これらの実体を認識しなくてはなら
ない。相互運用性のためには,妥当なXML文書は,これらの実体を使用する前に他の実体と同様に宣言
することが望ましい。実体 lt又はampを宣言する場合,内部実体として宣言し,その置換テキストは,
別扱いされる文字(不等号(より小)又はアンパサンド) への文字参照としなければならない。これらの実体
を参照しても結果が整形式となるためには,二重の別扱いを必要とする。実体gt,apos又は quotを宣言
――――― [JIS X 4159 pdf 33] ―――――
29
X 4159 : 2005
する場合,これらの実体を内部実体として宣言し,その置換テキストは,別扱いされる単一の文字(又はそ
の文字への文字参照)としなければならない。この場合,二重の別扱いは不要であるが,有害ではないこと
に注意。次にその例を示す。
<!ENTITY lt "&#60;">
<!ENTITY gt ">">
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
<!ENTITY quot """>
4.7 記法宣言 記法は,解析対象外実体の形式,記法属性をもつ要素の形式又は処理命令の対象とする
応用プログラムを特定する名前とする。
記法宣言は,記法の名前及び外部識別子を提供する。この名前は,外部実体宣言及び属性リスト宣言並
びに属性指定に用いる。外部識別子は,与えられた記法のデータを処理できるプログラム(helper application)
を,XMLプロセサ又は応用プログラムが探すために利用できる。
記法宣言
[82] NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) ・ '>'
[妥当性制約: 記法名の一意性]
[83] PublicID ::= 'PUBLIC' S PubidLiteral
妥当性制約: 記法名の一意性
あるNameを宣言できるのは,ただ一つの記法宣言とする。
宣言されていて,属性値・属性定義・実体宣言で参照されているすべての記法について,XMLプロセサ
は,記法の名前及び外部識別子を応用プログラムに提供しなければならない。さらに,外部識別子を,シ
ステム識別子,ファイル名又はその他の情報(その記法のデータを処理するプロセサを応用プログラムが起
動するために必要なもの)に展開してもよい。しかし,XMLプロセサ又は応用プログラムが動作するシス
テムでは利用できない記法を,XML文書が宣言し,参照しても,誤りとはしない。
4.8 文書実体 文書実体は,実体の成す木構造のルートであって,XMLプロセサが処理を開始する対象
とする。この規格は,XMLプロセサが,文書実体の存在する場所をどのように見つけるかは規定しない。
他の実体と異なり,文書実体は名前をもたず,いかなる識別子もなしにプロセサへの入力ストリームに出
現してもよい。
5. 適合性
5.1 妥当性を検証するプロセサ及び検証しないプロセサ 適合XMLプロセサは,妥当性を検証するもの
及び妥当性を検証しないものの二つに分類される。
妥当性を検証するプロセサも妥当性を検証しないプロセサも,読み込んだ文書実体及び他のすべての解
析対象実体において,この規格の整形式制約への違反を報告しなければならない。
利用者の任意選択によっては,妥当性を検証するプロセサは,DTD内の宣言によって示された制約への
違反と,この規格が規定する妥当性制約への違反とを,すべて報告しなければならない。 これを実現する
ために,妥当性を検証するXMLプロセサは,DTD全体と文書内で参照されているすべての外部解析対象
実体とを読み込んで処理しなければならない。
――――― [JIS X 4159 pdf 34] ―――――
30
X 4159 : 2005
妥当性を検証しないプロセサは,整形式であることを確認するために,DTDの内部サブセット全体を
含めた文書実体を調べることだけが義務付けられている。文書の妥当性を確認する必要はないが,読
み込んでいないパラメタ実体への参照が最初に起きるまでに読み込んだDTDの内部サブセットとパ
ラメタ実体とに現れるすべての宣言を処理しなければならない。すなわち,属性値を正規化し,内部
実体の置換テキストを取込み,デフォルトの属性値を与えるために,これらの宣言にある情報を使用
しなければならない。 実体の宣言は上書きされる可能性があるので,妥当性を検証しないプロセサは,
読み込んでいないパラメタ実体への参照より後に現れた実体宣言及び属性リスト宣言を処理してはな
らない。ただし,standalone="yes" のときは処理しなければならない。
妥当性を検証しないプロセサで,妥当でない文書を処理するとき,応用プログラムは一貫性のある
情報を受け取るとは限らないことに注意されたい。例えば,文書中において一意であるという幾つか
の要件は,満足されるとは限らない。これは,一つ以上の要素が同じidをもつこと,同じ名前の要素
型宣言又は記法宣言が重複することなどがある。これらの場合,応用プログラムにこのような情報を
報告する点に関するパーサの振る舞いは,定義しない。
5.2 XMLプロセサの使用 妥当性を検証するXMLプロセサの振る舞いはほとんど予測可能である。す
なわち,文書のすべての断片を読み込み,整形式及び妥当性に対するすべての違反を報告しなければなら
ない。妥当性を検証しないプロセサに必要とされることはそれより少ない。すなわち,文書実体以外の文
書の断片を読み込む必要はない。したがって,XMLプロセサの利用者に対して重要な二つの効果をもつ。
a) ある種の整形式の誤り,特に外部実体を読まなければ検出できない誤りを検出することに,妥当性を
検証しないプロセサは失敗してもよい。実体が宣言されていること,解析対象実体及び再帰なしとい
う見出しが付けられた制約,並びに4.4 XMLプロセサによる実体及び参照の扱いで禁止として説明さ
れている幾つかの場合が,この種の誤りに相当する。
b) プロセサから応用プログラムに渡される情報は,プロセサがパラメタ実体及び外部実体を読み込むか
どうかで異なる。例えば,妥当性を検証しないプロセサは,属性値を正規化したり,内部実体の置換
テキストを取り込んだり,デフォルトの属性値を与えることに失敗してもよい。失敗してよいかどう
かは,外部実体及びパラメタ実体内での宣言を既に読み込んでいるかどうかによって決まる。
異なるXMLプロセサ間での相互運用性を最も高めるためには,妥当性を検証しないプロセサを使用す
る応用プログラムは,そのようなプロセサでは必要とされない振る舞いに依存すべきではない。DTD機能
のうち検証に関係しないもの(デフォルトをもつ属性の宣言及び内部実体の宣言など)であって、外部実体
に定義されている又は定義されている可能性があるものを必要とする応用プログラムは,妥当性を検証す
るプロセサを使用することが望ましい。
6. 記法 XMLの形式的な文法は,簡単な拡張Backus-Naur Form(EBNF)記法によって与える。文法の各
規則は,次の形式で記号を定義する。
symbol ::= expression
記号は,正規言語の開始記号であるときは大文字で始め,そうでなければ小文字で始める。リテラル文
字列は引用符で囲む。
規則の右辺では,一つ以上の文字からなる文字列とマッチするために,次の式を使用する。
#xN
ここで,Nは16進の整数とする。この式は,JIS X 0221-1における値(コード位置)がNである文字と
マッチする。
――――― [JIS X 4159 pdf 35] ―――――
次のページ PDF 36
JIS X 4159:2005の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用