JIS X 4159:2005 拡張可能なマーク付け言語(XML)1.0 | ページ 3

6
X 4159 : 2005
文字データ
[14] CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
2.5 コメント コメント は,他のマーク付けの外ならば,文書のどこに現れてもよい。さらに,文書型
宣言の中で,文法が許す場所に現れてもよい。コメントは,文書の文字データの一部ではない。XMLプロ
セサは,応用プログラムがコメントのテキストを取り出すことを可能としてもよいが,そうしなくともよ
い。 互換性のためには,文字列 "--"(二連ハイフン)は,コメント内で現れてはならない。パラメタ実体参
照は,コメントの内部では認識されない。
コメント
[15] Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
コメントの例を次に示す。
<!-- declarations for <head> & <body> -->
この文法は,--->で終わるコメントを許さないことに注意すること。次に,整形式でない例を示す。
<!-- B+,B,or B--->
2.6 処理命令 処理命令(PI)によって,応用プログラムのための命令を文書に入れることができる。
処理命令
[16] PI ::= '<・' PITarget (S (Char* - (Char* '・>' Char*)))・ '・>'
[17] PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
PIは,文書の文字データの一部ではないが,応用プログラムに渡されなければならない。PIは,命令が
渡される応用プログラムを特定するために使用するターゲット(PITarget)で始まる。ターゲット名"XML",
"xml"などは,この規格の現在の版又は将来の版の標準化のために予約する。XMLの記法機構を,PIのタ
ーゲットを宣言するために用いてもよい。パラメタ実体参照は,処理命令の内部では認識されない。
2.7 CDATAセクション CDATAセクションは,文字データが出現するところであれば,どこに出現し
てもよい。CDATAセクションで囲まなければマーク付けとして認識されてしまう文字を含むテキストを別
扱いするのにCDATAセクションを使用する。CDATAセクションは,文字列"<![CDATA["で始まり,文字
列"]]>"で終わる。
CDATAセクション
[18] CDSect ::= CDStart CData CDEnd
[19] CDStart ::= '<![CDATA['
[20] CData ::= (Char* - (Char* '))>' Char*))
[21] CDEnd ::= ']]>'
CDATAセクション内では,文字列CDEndだけをマーク付けとして認識するので,不等号(より小)及び
アンパサンドは,そのままの形で出現してよい。"&lt;"及び"&amp;"を用いて別扱いする必要はない(別扱い

――――― [JIS X 4159 pdf 11] ―――――

                                                                                              7
X 4159 : 2005
できない。)。CDATAセクションは入れ子にはできない。
"<greeting>"及び"</greeting>"を,マーク付けではなく,文字データとして認識するためのCDATAセクシ
ョンの例を次に示す。
<![CDATA[<greeting>Hello,world!</greeting>]]>
2.8 前書き及び文書型宣言 XML文書は,使用するXMLの版を指定するXML宣言で始めることが望
ましい。 例えば,次に示す完全なXML文書は,整形式であるが 妥当ではない。
<・xml version="1.0"・>
<greeting>Hello,world!</greeting>
同じことが次の文書にもあてはまる。
<greeting>Hello,world!</greeting>
XML文書内のマーク付けの機能は,記憶構造及び論理構造を記述すること,並びに属性名及び属性値の
対を論理構造に関連づけることにある。XMLは,論理構造についての制約条件を定義するため,及びあら
かじめ定義された記憶単位を使用するための機構として文書型宣言を提供する。妥当なXML文書とは,
文書型宣言をもち,その文書型宣言に示す制約条件を満たすXML文書とする。
文書型宣言は,文書の最初の要素の前に現れなければならない。
前書き
[22] prolog ::= XMLDecl・ Misc* (doctypedecl Misc*)・
[23] XMLDecl ::= '<・xml' VersionInfo EncodingDecl・ SDDecl・ S・ '・>'
[24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
[25] Eq ::= S・ '=' S・
[26] VersionNum ::= '1.0'
[27] Misc ::= Comment | PI | S
XMLの文書型宣言は,ある文書クラスのための文法を記述するマーク付け宣言を含むか,参照する。こ
の文法を,文書型定義又はDTDという。文書型宣言は,マーク付け宣言を含んだ外部サブセット(特別な
種類の外部実体)を参照することができ,又は内部サブセットにマーク付け宣言を直接含むこともできる。
外部サブセットと内部サブセットの両方を使うこともできる。ある文書のDTDは,両方のサブセットを
まとめたものとして構成される。
マーク付け宣言は,要素型宣言,属性リスト宣言,実体宣言又は記法宣言とする。次に示す整形式制約
及び妥当性制約に規定するとおり,これらの宣言は,パラメタ実体内に全体又は一部が含まれてもよい。
より詳しい情報は,4. 物理構造を参照のこと。
文書型定義
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)・ S・ ('[' intSubset ']' S・)・ '>'
[妥当性制約: ルート要素型]
[整形式制約: 外部サブセット]
[28a] DeclSep ::= PEReference | S
[整形式制約: 宣言間のパラメタ実体]
[28b] intSubset ::= markupdecl | DeclSep

――――― [JIS X 4159 pdf 12] ―――――

8
X 4159 : 2005
[29] markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment
[妥当性制約: 宣言及びパラメタ実体が厳密に入れ子をなすこと]
[整形式制約: 内部サブセット内のパラメタ実体]
外部サブセットを参照せず,内部サブセットを含まないdoctypedeclをもつ整形式文書を作成できること
に注意すること。
マーク付け宣言は,その全体又は一部を,パラメタ実体の置換テキストで構成してもよい。各々の非終
端記号 (elementdecl,AttlistDeclなど)のための生成規則は,この規格の後半にあり,すべてのパラメタ実体
を取り込んだ後の宣言について記述する。
パラメタ実体参照は,DTD(内部及び外部サブセット並びに外部パラメタ実体)のどの場所でも認識され
る。ただし,リテラル,処理命令,コメント及び無視される条件セクション(3.4 条件付きセクションを参
照すること)を除く。パラメタ実体は,実体値リテラルでも同様に認識される。内部サブセットで使用され
るパラメタ実体は,次に示す制限を受ける。
妥当性制約: ルート要素型
文書型宣言におけるNameは,ルート要素の型とマッチしなければならない。
妥当性制約: 宣言及びパラメタ実体が厳密に入れ子をなすこと
パラメタ実体の置換テキストは,マーク付け宣言内において,厳密に入れ子になっていなければなら
ない。つまり,マーク付け宣言(markupdecl)の最初又は最後の文字が,パラメタ実体参照の指し示す置
換テキストに含まれれば,両方とも同じ置換テキストに含まれなければならない。
整形式制約: 内部サブセット内のパラメタ実体
DTDの内部サブセットでは,パラメタ実体参照は,マーク付け宣言が出現可能な場所だけに出現でき
る。マーク付け宣言の一部としては出現できない。この制約は,外部パラメタ実体又は外部サブセッ
トでの参照には適用しない。
整形式制約: 外部サブセット
外部サブセットがある場合,その外部サブセットは,生成規則 extSubsetにマッチしなければならない。
整形式制約: 宣言間のパラメタ実体
DeclSepでのパラメタ実体参照の置換テキストは,生成規則extSubsetDeclにマッチしなければならない。
内部サブセットのときと同様に,外部サブセットと,DeclSepにおいて参照する任意の外部パラメタ実体
とは,非終端記号markupdeclによって許される型の完全なマーク付け宣言を幾つか並べたものでなければ
ならない。マーク付け宣言の間には,空白又はパラメタ実体参照を置いてもよい。外部サブセット又はこ
れらの外部パラメタ実体の内容の一部は,条件付きセクションを用いて無視してもよい。内部サブセット
ではこれは許されないが,内部サブセットから参照される外部パラメタ実体では許される。
外部サブセット
[30] extSubset ::= TextDecl・ extSubsetDecl
[31] extSubsetDecl ::= ( markupdecl | conditionalSect | DeclSep)*
外部サブセット及び外部パラメタ実体の中では,パラメタ実体参照がマーク付け宣言の間だけでなく,
マーク付け宣言の中でも認められる。この点でも,外部サブセット及び外部パラメタ実体は,内部サブセ
ットと異なる。

――――― [JIS X 4159 pdf 13] ―――――

                                                                                              9
X 4159 : 2005
文書型宣言付きのXML文書の例を,次に示す。
<・xml version="1.0"・>
<!DOCTYPE greeting SYSTEM "hello.dtd">
<greeting>Hello,world!</greeting>
システム識別子"hello.dtd"が,文書のDTDのアドレス(統一資源識別子(URI)参照)となる。
次の例のとおりに宣言を局所的に与えることもできる。
<・xml version="1.0" encoding="UTF-8" ・>
<!DOCTYPE greeting [
<!ELEMENT greeting (#PCDATA)>
]>
<greeting>Hello,world!</greeting>
外部サブセット及び内部サブセットの両方を使用するときは,内部サブセットが外部サブセットより先
に出現したと見なす。これは,内部サブセットの実体及び属性リスト宣言が,外部サブセットの実体及び
属性リスト宣言に優先するという効果をもたらす。
2.9 非依存文書宣言 XMLプロセサは,応用プログラムに文書の内容を渡すが,マーク付け宣言は,こ
の内容に影響を与えることがある。例えば,属性のデフォルト値及び実体宣言は影響を与える。非依存文
書宣言は,XML宣言の一部分として出現することができ,影響を与えるマーク付け宣言が文書実体の外部
又はパラメタ実体の中に出現するかどうかを示す。外部マーク付け宣言は外部サブセット又はパラメタ実
体の中に出現するマーク付け宣言として定義される(パラメタ実体は,外部でも内部でもよい。妥当性を検
証しないプロセサが内部パラメタ実体を読むことを義務付けないために,内部パラメタ実体も含める。)。
非依存文書宣言
[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
[妥当性制約: 非依存文書宣言]
非依存文書宣言では,値"yes"は,XMLプロセサから応用プログラムへと渡される情報に影響する外部
マーク付け宣言が存在しないことを意味する。値"no"は,影響する外部マーク付け宣言が存在するか,又
は存在する可能性があることを意味する。非依存文書宣言は,外部宣言が存在するかどうかだけを示すこ
とに注意すること。外部実体への参照が文書内に存在していても,その実体が内部で宣言されているとき
は,文書の非依存の値には影響を与えない。
外部マーク付け宣言が存在しなければ,非依存文書宣言は意味をもたない。外部マーク付け宣言は存在
するが,非依存文書宣言が存在しない場合は,"no"の値が設定されているものとする。
XML文書で standalone="no" が設定されているものは,あるアルゴリズムでstandalone="yes"の文書
に変換できる。変換後の文書のほうがネットワークによる配信には望ましいかもしれない。
妥当性制約: 非依存文書宣言
非依存文書宣言は,何らかの外部マーク付け宣言が次のいずれかを宣言しているときは,値"no"を取
らなければならない。
a) デフォルト値付きの属性であって,この属性が適用される要素が,属性値を 指定せずに文書内に現
れるもの。
b) mp,lt,gt,apos,quot以外の実体であって,その実体に対する参照が文書内に出現するもの。

――――― [JIS X 4159 pdf 14] ―――――

10
X 4159 : 2005
c) トークン化された型をもつ属性であって,文書中で出現するときの属性値は,この値から正規化が
生成する値と,宣言がないとしたときに正規化が生成する値とが異なるもの。
d) 要素内容をもつ要素型であって,空白がその要素型のいずれかのインスタンス内に直接現れるもの。
非依存文書宣言付きのXML宣言の例を,次に示す。
<・xml version="1.0" standalone='yes'・>
2.10 空白の取扱い XML文書を編集するときは,マーク付けを目立たせ読みやすくするために,“空
白”(スペース,タブ及び空白行)を使うと便利なことが多い。これらの空白は,配布する版の文書の一部に
含めることを普通は意図していない。しかし,“意味のある”空白であって,配布する版に保持されなけれ
ばならないものも多い。例えば,詩及びソースコードにおける空白がこれにあたる。
XMLプロセサは,文書内のマーク付け以外のすべての文字を,変更せずにそのまま応用プログラムに渡
さなければならない。妥当性を検証するXMLプロセサは,これらの文字の中でどの文字が要素内容に出
現する空白を構成するかを応用プログラム側に伝えなければならない。
xml:spaceという特別な属性を要素に加えることによって,応用プログラムはこの要素の中の空白を保
存することが望ましいという意図を示してもよい。妥当な文書では,この属性を使用する場合は,他の属
性と同じように宣言しなければならない。宣言するときは,取り得る値を"default","preserve"のいずれか
又は両方に限る列挙型でなければならない。例を次に示す。
<!ATTLIST poem xml:space (default-preserve) 'preserve'>
<!ATTLIST pre xml:space (preserve) #FIXED 'preserve'>
値"default"は,応用プログラムのデフォルトの空白処理モードがその要素に適用できることを意味する。
値"preserve"は,すべての空白を応用プログラムが保存することを意味する。この宣言の意図は,xml:space"
属性の別の指定で上書きしない限り,要素の内容に現れるすべての要素に適用すると解釈する。この規格
は,xml:spaceに"default"及び"preserve"以外の値を指定したときの意味は定義しない。他の値を指定するこ
とは誤りとする。XMLプロセサは,この誤りを報告してもよく,この属性指定を無視することによって回
復してもよく,応用プログラムに誤った値を報告することによって回復してもよい。応用プログラムは,
誤った値を無視しても拒絶してもよい。
文書のルート要素については,この属性の値を指定するか,又はこの属性のデフォルト値が宣言されて
いる場合を除いては,応用プログラムによる空白の取扱いについて,いかなる意図も示さないと解釈する。
2.11 行末の取扱い XMLの解析対象実体は,通常コンピュータのファイル内に保存され,編集の便宜の
ために複数の行に分けることが多い。これらの行は,普通は,復帰(#xD)コード及び改行(#xA)コードの何
らかの組合せによって分けられる。
応用プログラムの仕事を簡単にするため,XMLプロセサは,次の処理をした場合と同一の文字を,応用
プログラムに渡さなければならない。入力された(文書実体を含む)外部解析対象実体の中のすべての行末
(連続する2文字#xD #xA,及び#xAを後ろにともなわない#xD)を,解析を行う前にXMLプロセサが単一
の#xAに変換することによって正規化する処理とする。
2.12 言語識別 文書処理においては,その文書の中身がどんな自然言語又は形式言語で書かれているか
明示することが,役に立つことが多い。XML文書内の要素のもつ内容又は属性値において使用する言語を
指定するために,xml:langという名前の特別な属性を,文書内に挿入してもよい。妥当な文書においてこ
の属性を使用する場合は,他の属性と同様に宣言しなくてはならない。この属性の値は, IETF RFC 3066(言
語識別のためのタグ)又は後継規定で定義される言語識別コードとする。さらに,空白文字列も許す。

――――― [JIS X 4159 pdf 15] ―――――

次のページ PDF 16

JIS X 4159:2005の国際規格 ICS 分類一覧