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

                                                                                             11
X 4159 : 2005
(生成規則33から38は削除された。)
例を次に示す。
<p xml:lang="en">The quick brown fox jumps over the lazy dog.</p>
<p xml:lang="en-GB">What colour is it・</p>
<p xml:lang="en-US">What color is it・</p>
<sp who="Faust" desc='leise' xml:lang="de">
<l>Habe nun,ach! Philosophie,</l>
<l>Juristerei,und Medizin</l>
<l>und leider auch Theologie</l>
<l>durchaus studiert mit heisem Bemuh'n.</l>
</sp>
xml:langで宣言した意図は,この要素の内容の中に現れる他の要素のxml:lang属性で上書きされない限
り,指定した要素のすべての属性と内容に適用される。特に,要素Bでxml:langとして空文字列を指定す
ることによって,特定の言語を指定することなく,上位の要素Aで指定されたxml:langを打ち消すことが
できる。Bの中では,有効な言語情報は存在しないと見なされる。これは,B及びその祖先においてxml:lang
が指定されなかったときと同様とする。
備考 言語情報は,外部の転送プロトコル(HTTP,MIMEなど)によって与えられることもある。与え
られた場合,XML応用プログラムはこの情報を利用してもよいが,xml:langによって与えられる
より局所的な情報がこれを上書きすると見なすことが望ましい。
xml:langを次に示すとおりに簡単に宣言してもよい。
xml:langCDATA #IMPLIED
必要ならば,特定のデフォルト値を与えてもよい。英語を母語とする学生用のフランス語の詩集では,
説明及び注を英語で記述すれば,属性xml:langを次のとおりに宣言することとなる。
<!ATTLIST poem xml:lang CDATA 'fr'>
<!ATTLIST gloss xml:lang CDATA 'en'>
<!ATTLIST note xml:lang CDATA 'en'>
3. 論理構造 いかなるXML文書も,一つ以上の要素を含む。要素の境界は,開始タグ及び終了タグによ
って区切る。要素が空要素のときは,空要素タグで示す。各々の要素は型をもつ。要素型は名前[共通識
別子(generic identifier)又はGIと呼ぶことがある。]によって特定される。要素は幾つかの属性をもつこと
ができる。属性は名前及び値をもつ。
要素
[39] element ::= EmptyElemTag
| STag content ETag
[整形式制約: 要素型のマッチ]
[妥当性制約: 要素の妥当性]
この規格は,要素型及び属性の意味,使用方法,又は(構文に関することを除き)名前に制約を与えない。
ただし,正規表現(('X'|'x')('M'|'m')('L'|'l'))にマッチする文字列で始まる名前は,この版又は今後の版のこの規

――――― [JIS X 4159 pdf 16] ―――――

12
X 4159 : 2005
格での標準化のために予約する。
整形式制約: 要素型のマッチ
要素の終了タグの名前は,その要素の開始タグにおける要素型とマッチしなければならない。
妥当性制約: 要素の妥当性
要素が妥当とは,その要素型とマッチするNameをもつ宣言(elementdeclにマッチするもの)が存在し,
さらに次のいずれかの条件を満たす場合とする。
a) 宣言がEMPTYにマッチし,要素が 内容をもたない(実体参照・コメント・PI・空白も,もたない。)。
b) 宣言がchildrenにマッチし,要素の 子要素の並びが(実体参照を置換テキストで置き換えた後で),
内容モデル中の正規表現によって生成される言語に属する。開始タグ及び最初の子要素の間,子要素
の間,又は最後の子要素及び終了タグの間に空白・コメント・PI (すなわち,Miscにマッチするもの。)
が,あってもよい。空白文字だけを含むCDATAセクション,及び空白に展開される文字参照を置換
テキストとしてもつ実体への参照は,非終端記号Sにマッチせず,そのためこれらの位置に出現でき
ないことに注意すること。しかし,空白に展開される文字参照だけから構成されるリテラル値をもつ
内部実体への参照は,文字参照の展開により置換テキストが空白になるので,非終端記号Sにマッチ
する。
c) 宣言がMixedにマッチし,要素の内容は,(実体参照を置換テキストで置き換えた後に)文字データ,
空白,PI及び 子要素からなる。子要素の要素型は,内容モデルに出現する名前にマッチする。
d) 宣言がANYにマッチし,(実体参照を置換テキストで置き換えた後の)内容は文字データ及び子要
素から成り,どの子要素の要素型も宣言されている。
3.1 開始タグ,終了タグ及び空要素タグ 空でない任意のXML要素の始まりは,開始タグによってマー
ク付けする。
開始タグ
[40] STag ::= '<' Name (S Attribute)* S・ '>'
[整形式制約: 属性指定の一意性]
[41] Attribute ::= Name Eq AttValue
[妥当性制約: 属性値の型]
[整形式制約: 外部実体への参照がないこと]
[整形式制約: 属性値に<を含まないこと]
開始タグ及び終了タグ内のNameは,要素の型を表す。Name及びAttValueの対を要素の属性指定といい,
個々の対におけるNameを属性名といい,AttValueの内容(区切り子' 又は"の間のテキスト)を属性値という。
開始タグ又は空要素タグにおける属性指定の順序には意味がないことに注意すること。
整形式制約: 属性指定の一意性
開始タグ又は空要素タグでは,同一の属性名が2回以上出現してはならない。
妥当性制約: 属性値の型
属性は宣言されていなければならない。属性値は,その属性に対して宣言した型に属さなければなら
ない(属性の型については,3.3 属性リスト宣言を参照。)。
整形式制約: 外部実体への参照がないこと
属性値には,外部実体への直接的又は間接的な参照を含むことはできない。

――――― [JIS X 4159 pdf 17] ―――――

                                                                                             13
X 4159 : 2005
整形式制約: 属性値に<を含まないこと
属性値内で直接的又は間接的に参照する実体の置換テキストには,<を含んではならない。
開始タグの例を次に示す。
<termdef id="dt-dog" term="dog">
開始タグで始まる要素の終わりは,終了タグでマーク付けしなければならない。この終了タグは,対応
する開始タグの要素型と同じ名前をもつ。
終了タグ
[42] ETag ::= '</' Name S・ '>'
終了タグの例を,次に示す。
</termdef>
要素の開始タグと終了タグとの間のテキストをその要素の内容という。
要素の内容
[43] content ::= CharData・ ((element | Reference | CDSect | PI | Comment) harData・)*
内容をもたない要素は空であるという。空要素は,終了タグを直後にともなう開始タグによって表現さ
れるか,又は空要素タグによって表現される。 空要素タグは,次の特別な形式をとる。
空要素のためのタグ
[44] EmptyElemTag ::= '<' Name (S Attribute)* S・ '/>'
[整形式制約: 属性指定の一意性]
空要素タグは,内容をもたない任意の要素の表現に利用できる。空要素タグで表現する要素を,キーワ
ードEMPTYを用いて宣言しなくてもよい。 相互運用性のためには,空要素タグは,EMPTYとして宣言
された要素に使用すべきであり,またこれ以外の要素に使用すべきではない。
空要素の例を,次に示す。
<IMG align="left"
src="http://www.w3.org/Icons/WWW/w3chome" />
<br></br>
<br/>
3.2 要素型宣言 妥当性を保証するため,要素型宣言及び属性リスト宣言を用いてXML文書の要素の構
造に制約を加えることができる。要素型宣言は,要素の内容についての制約とする。
要素型宣言は,要素の子として出現可能な要素型について,制約を加えることが多い。利用者の任意選
択によっては,要素型宣言をもたない要素型が他の要素型宣言によって参照されれば,XMLプロセサは警
告を出してもよい。しかし,これは誤りとはしない。
要素型宣言は次の形式をとる。
要素型宣言

――――― [JIS X 4159 pdf 18] ―――――

14
X 4159 : 2005
[45] elementdecl ::= '<!ELEMENT' S Name S contentspec S・ '>'
[妥当性制約: 要素型宣言の一意性]
[46] contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
ここで,Nameは宣言されている要素の型を示す。
妥当性制約: 要素型宣言の一意性
一つの要素型を2回以上宣言できない。
要素型宣言の例を次に示す。
<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA-emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>
3.2.1 要素内容 ある型の要素が,必ず子要素だけを含み(文字データを含まない。),それらの間には空
白(非終端記号Sにマッチする文字)だけしか現れないとき,その要素型は,要素内容をもつという。 この
場合,内容モデルが制約となる。内容モデルは,子要素の型及び子要素の出現順序を制御する簡単な文法
とする。この文法は,内容素子(cp)から成る。内容素子は,名前,内容素子の選択リスト又は内容素子の
列リストから構成される。
要素内容モデル
[47] children ::= (choice | seq) ('・' | '*' | '+')・
[48] cp ::= (Name | choice | seq) ('・' | '*' | '+')・
[49] choice ::= '(' S・ cp ( S・ '|' S・ cp )+ S・ ')'
[妥当性制約: グループ及びパラメタ実体が厳密な入れ子をなしていること]
[50] seq ::= '(' S・ cp ( S・ ',' S・ cp )* S・ ')'
[妥当性制約: グループ及びパラメタ実体が厳密な入れ子をなしていること]
ここで,Nameは,子として出現してよい要素の型を示す。この文法で選択リストが現れる位置では,選
択リスト内のいずれの内容素子も要素内容の中に現れてよい。列リストに現れる内容素子は,リストで指
定する順番のとおりに,要素内容に現れなければならない。名前又はリストの後に出現する任意選択の文
字は,要素又はリスト内の内容素子が,1回以上任意の回数(+),0回以上任意の回数(*)又は0回若しくは
1回(・)出現可能なことを規定する。この演算子がない場合は要素又は内容素子が正確に1度だけ現われな
くてはならないことを意味する。 ここで示す構文及び意味は,この規格における生成規則で用いるものと
同一とする。
要素の内容が内容モデルにマッチするのは,列,選択及び繰返し演算子に従って,内容の中の要素と内
容モデル内の要素型とをマッチさせながら,内容モデル内の一つのパスをたどれるときに限る。互換性の
ため,要素が,内容モデルにおける要素型の複数の出現位置とマッチする内容モデルは,誤りとする。詳
細な規定については,附属書E 決定的内容モデルを参照。
妥当性制約: グループ及びパラメタ実体が厳密な入れ子をなしていること
パラメタ実体の置換テキストは,括弧で囲まれたグループによって,厳密な入れ子を構成しなければ
ならない。つまり,choice,seq又はMixedに含まれる左小括弧又は右小括弧のいずれか一方がパラメ

――――― [JIS X 4159 pdf 19] ―――――

                                                                                             15
X 4159 : 2005
タ実体の置換テキストに含れれば,他方も同じ置換テキストに含まれなければならない。
相互運用性のためには,choice,seq又はMixedの中にパラメタ実体が現れた場合,その置換テキス
トは少なくとも一つの空でない文字を含むことが望ましく,置換テキストの最初と最後の空でない文
字は接続子( |又は,)でないことが望ましい。
要素内容モデルの幾つかの例を次に示す。
<!ELEMENT spec (front,body,back・)>
<!ELEMENT div1 (head,(p | list | note)*,div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>
3.2.2 混合内容 ある要素型の要素が文字データを含むことができるとき,その要素型は,混合内容をも
つという(文字データに子要素が混在しても構わない。)。 この場合,子要素の型についての制約が存在し
てもよいが,子要素の順序又は出現回数についての制約は存在しない。
混合内容宣言
[51] Mixed ::= '(' S・ '#PCDATA' (S・ '|' S・ Name)* S・ ')*'
| '(' S・ '#PCDATA' S・ ')'
[妥当性制約: グループ及びパラメタ実体が厳密な入れ子をなしていること]
[妥当性制約: 要素型の重複の禁止]
ここで,Nameは子として出現してもよい要素の型を示す。キーワード #PCDATA は,歴史的には"解析
対象文字データ(parsed character data)"に由来する。
妥当性制約: 要素型の重複の禁止
一つの混合内容宣言内に,同じ名前が複数回出現してはならない。
混合内容宣言の例を次に示す。
<!ELEMENT p (#PCDATA-a|ul-b|i-em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>
3.3 属性リスト宣言 属性は,名前及び値の対を要素に関連付けるために用いる。属性指定は,開始タ
グ又は空要素タグ内でだけ可能とする。したがって,属性指定を認識するための生成規則は,3.1 開始タ
グ,終了タグ及び空要素タグに示されている。属性リスト宣言は,次の目的で用いる。
a) ある要素型に適用する属性の集合を規定する。
b) 属性への型制約を設定する。
c) 属性のデフォルト値を規定する。
属性リスト宣言は,ある要素型と関連付けられた各属性に対し,名前,データ型及び(存在すれば)デフ
ォルト値を規定する。
属性リスト宣言
[52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S・ '>'
[53] AttDef ::= S Name S AttType S DefaultDecl

――――― [JIS X 4159 pdf 20] ―――――

次のページ PDF 21

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