この規格ページの目次
16
X 4159 : 2005
AttlistDecl規則に含まれるNameは,要素型の名前とする。利用者の任意選択によっては,宣言していな
い要素型に対して属性を宣言したならば,XMLプロセサは,警告を出してもよい。しかし,これは誤りと
はしない。 AttDef規則におけるNameは,属性の名前とする。
ある要素型に対して,複数のAttlistDeclがある場合,これらすべての内容を繋ぎ合わせる。ある要素型の
同じ属性に,複数の定義がある場合には,最初の宣言を有効とし,他の宣言は無視する。相互運用性のた
めには,DTDの作成者は,ある要素型には高々一つの属性リスト宣言しか与えない,ある属性名には高々
一つの属性定義しか与えない,及びすべての属性リスト宣言には少なくとも一つの属性定義を与える,と
いう選択をしてもよい。相互運用性のためには,XMLプロセサは,利用者の任意選択によっては,ある要
素型に複数の属性リスト宣言を与えたり,ある属性に複数の属性定義を与えたりしたときに,警告を出し
てもよい。しかし,これは,誤りとはしない。
3.3.1 属性の型 XMLの属性の型は,文字列型・トークン化型・列挙型の3種類とする。文字列型は,
値として任意のリテラル文字列をとる。トークン化型は,字句及び意味に関して,次に示す様々な制約を
もつ。文法中で書かれている妥当性制約は,3.3.3 属性値の正規化で記述されるとおりに属性値が正規化
された後で適用される。
属性の型
[54] AttType ::= StringType | TokenizedType | EnumeratedType
[55] StringType ::= 'CDATA'
[56] TokenizedType ::= 'ID'
[妥当性制約: ID]
[妥当性制約: 一つの要素ごとに一つのID]
[妥当性制約: ID属性のデフォルト]
| 'IDREF' [妥当性制約: IDREF]
| 'IDREFS' [妥当性制約: IDREF]
| 'ENTITY' [妥当性制約: 実体名]
| 'ENTITIES' [妥当性制約: 実体名]
| 'NMTOKEN' [妥当性制約: 名前トークン]
| 'NMTOKENS' [妥当性制約: 名前トークン]
妥当性制約: ID
ID型の値は,生成規則Nameにマッチしなければならない。一つのXML文書内では,一つの名前が,
この型の値として複数回現れてはならない。つまり,IDの値は,要素を一意に特定しなければならな
い。
妥当性制約: 一つの要素ごとに一つのID
要素型は,複数のID属性をもってはならない。
妥当性制約: ID属性のデフォルト
ID属性は,デフォルトとして,#IMPLIED又は#REQUIREDを宣言しなければならない。
妥当性制約: IDREF
IDREF型の値は,生成規則Nameにマッチしなければならない。IDREFS型の値は,Namesにマッチし
――――― [JIS X 4159 pdf 21] ―――――
17
X 4159 : 2005
なければならない。各々のNameは,XML文書内に存在する要素のID属性の値とマッチしなければな
らない。つまり,IDREFの値は,あるID属性の値とマッチしなければならない。
妥当性制約: 実体名
ENTITY型の値は,生成規則Nameにマッチしなければならない。ENTITIES型の値は,Namesにマッ
チしなければならない。各々のNameは,DTDで宣言する解析対象外実体とマッチしなければならない。
妥当性制約: 名前トークン
NMTOKEN型の値は,生成規則Nmtokenにマッチしなければならない。NMTOKENS型の値は,
Nmtokensにマッチしなければならない。
列挙型の属性は,宣言した幾つかの値の一つをとることができる。列挙型には,2種類ある。
列挙属性の型
[57] EnumeratedType ::= NotationType | Enumeration
[58] NotationType ::= 'NOTATION' S '(' S・ Name (S・ '|' S・ Name)* S・ ')'
[妥当性制約: 記法属性]
[妥当性制約: 一つの要素型に一つの記法]
[妥当性制約: 空要素に記法なし]
[妥当性制約: トークンの重複なし]
[59] Enumeration ::= '(' S・ Nmtoken (S・ '|' S・ Nmtoken)* S・ ')'
[妥当性制約: 列挙]
[妥当性制約: トークンの重複なし]
NOTATION属性は,その属性が付与されている要素を解釈するのに使用する記法を特定する。記法は,
DTD内で宣言され,システム識別子及び/又は公開識別子に関連付けられる。
妥当性制約: 記法属性
この型の値は,宣言に含まれる幾つかの記法の名前の一つとマッチしなければならない。つまり,宣
言に含まれる記法名は,すべて宣言されていなければならない。
妥当性制約: 一つの要素型に一つの記法
一つの要素型には,一つ以下のNOTATION属性しか指定できない。
妥当性制約: 空要素に記法なし
相互運用性のためには ,NOTATION型の属性をEMPTYと宣言された要素に対して宣言してはなら
ない。
妥当性制約: トークンの重複なし
単一のNotationType属性宣言における記法名は,すべて異なるものとする。同様に,単一のEnumeration
属性宣言におけるすべての Nmtokenは,すべて異なるものとする。
妥当性制約: 列挙
この型の値は,宣言に含まれる幾つかのNmtokenトークンの一つとマッチしなければならない。
相互運用性のためには,同じNmtokenは,一つの要素型の幾つかの列挙型の属性として,複数回現れな
いことが望ましい。
3.3.2 属性のデフォルト 属性宣言は,属性の指定が必すかどうかについての情報を与える。必すでない
場合には,文書内で属性が指定されていないとき,XMLプロセサがどう処理するかという情報も与える。
――――― [JIS X 4159 pdf 22] ―――――
18
X 4159 : 2005
属性のデフォルト
[60] DefaultDecl ::= '#REQUIRED' | '#IMPLIED'
| (('#FIXED' S)・ AttValue)
[妥当性制約: 必す属性]
[妥当性制約: 属性デフォルトの構文的な正しさ]
[整形式制約: 属性値に<を含まないこと]
[妥当性制約: 固定の属性デフォルト]
属性宣言において,#REQUIREDはその属性が必すであること,#IMPLIEDはデフォルト値がないこと
を意味する。 宣言が#REQUIREDでも#IMPLIEDでもないときには,AttValueの値が,デフォルト値とな
る。#FIXEDキーワードは,その属性の値がデフォルト値と常に同一でなければならないことを示す。デ
フォルト値が宣言されている属性が省略されている要素をXMLプロセサが見つけた場合は,宣言された
デフォルト値を応用プログラムに報告しなければならない。
妥当性制約: 必す属性
デフォルトの宣言が#REQUIREDキーワードの場合,属性リスト宣言で参照した要素型のすべての要
素で,その属性を指定しなければならない。
妥当性制約: 属性デフォルトの構文的な正しさ
宣言したデフォルト値は,宣言した属性型の構文的な制約を満たさなければならない。
型についての構文的な制約だけが要求されていることに注意。他の制約(例えばENTITY型の属性の
値は,宣言された解析対象外実体の名前であること。)は,宣言されたデフォルト値が実際に使われた
とき(この属性を指定しない要素が現れたとき。)に有効になる。
妥当性制約: 固定の属性デフォルト
属性が#FIXEDキーワードで宣言されたデフォルト値をもつ場合,その属性のインスタンスはデフォ
ルト値にマッチしなければならない。
属性リスト宣言の例を,次に示す。
<!ATTLIST termdef
id ID #REQUIRED
name CDATA #IMPLIED>
<!ATTLIST list
type "ordered">
(bullets-ordered-glossary)
<!ATTLIST form
method CDATA #FIXED "POST">
3.3.3 属性値の正規化 属性値を応用プログラムに渡す前,又は妥当性を検証する前に,XMLプロセサ
は,次に示すアルゴリズムを適用することによって,属性値を正規化しなければならない。ただし,この
アルゴリズムと同じ結果を応用プログラムに渡すなら,他の方法によって正規化してもよい。
a) すべての改行は入力の際に,2.11 行末の取扱いで記述されるとおりに#xAに正規化されなければなら
ない。このアルゴリズムの残りの操作はこの方法で正規化されたテキストに対して行う。
b) 正規化された値は,空文字列であるとして処理を始める。
c) 正規化前の属性値にある,文字,実体参照及び文字参照に対して,先頭から最後まで次の処理を行う。
――――― [JIS X 4159 pdf 23] ―――――
19
X 4159 : 2005
1) 文字参照については,正規化された値に参照された文字を追加する。
2) 実体参照については,このアルゴリズムのステップc)を実体の置換テキストに再帰的に適用する。
3) 空白文字(#x20,#xD,#xA,#x9)については,正規化された値にスペース文字(#x20)を追加する。
4) そのほかの文字については,その文字を正規化された値に追加する。
属性の型がCDATAでない場合は,XMLプロセサは正規化された属性値に対して,さらに次の処理をし
なければならない。まず,先頭又は末尾にあるスペース文字(#x20)をすべて取り除く。次に,連続するス
ペース文字(#x20)を一つのスペース文字(#x20)に置き換える。
正規化前の属性値が,スペース(#x20)以外の空白文字への文字参照を含んでいるなら,正規化された値
は参照された文字(#xD,#xA又は #x9)をそのまま含む。正規化前の値が,空白文字(参照ではなく)を含ん
でいるときは異なる結果になる。この場合,各空白文字は,正規化された値では,スペース文字(#x20)に
置き換えられる。置換テキストがスペース文字を含む実体が,正規化前の値で参照されているときも異な
る結果になる。この場合,正規化された値では,再帰的な処理によって,空白文字はスペース文字(#x20)
に置き換えられる。
妥当性を検証しないプロセサは,宣言が見つからない属性は,すべて,CDATAと宣言しているとして扱
うものとする。
属性値が,宣言を読み込んでいない実体への参照を含むときは,誤りとする。これは,妥当性を検証し
ないプロセサを用いるときに限って起こりうる。
次に,属性の正規化についての例を示す。次の宣言がある場合を考える。
<!ENTITY d "
">
<!ENTITY a "
">
<!ENTITY da "
">
属性aがNMTOKENSとして宣言されていれば,表1の左欄の属性指定は,中欄の文字の並びに正規化
される。属性aが CDATAとして宣言されていれば,右欄の内容に正規化される。
表 1 属性値の正規化の例
属性指定 aが NMTOKENS aが CDATA
a="
xyz #x20 #x20 x y z
xyz"
#x20 #x20 A #x20 #x20 #x20 B
a="&d;&d;A&a; &a;B&da;" A #x20 B
#x20 #x20
a=
#xD #xD A #xA #xA B
"

A

B
&# #xD #xD A #xA #xA B #xD #xA
#xD #xA
xa;"
aがNMTOKENS型として宣言された場合,最後の例は,整形式ではあるが妥当ではないことに注意。
3.4 条件付きセクション 条件付きセクションとは,文書型宣言の外部サブセットの一部又は外部パラ
メタ実体の一部であって,制御キーワードの指定によって,DTDの論理構造に含まれるか又は除かれるか
が変わる部分とする。
――――― [JIS X 4159 pdf 24] ―――――
20
X 4159 : 2005
条件付きセクション
[61] conditionalSect ::= includeSect | ignoreSect
[妥当性制約: 条件付きセクション/パラメタ実体が厳密に入れ子をなすこと ]
[62] includeSect ::= '<![' S・ 'INCLUDE' S・ '[' extSubsetDecl ']]>'
[63] ignoreSect ::= '<![' S・ 'IGNORE' S・ '[' ignoreSectContents* ']]>'
[妥当性制約: 条件付きセクション/パラメタ実体が厳密に入れ子をなすこと ]
[64] ignoreSectContents ::= Ignore ('<![' ignoreSectContents '])>' Ignore)*
[65] Ignore ::= Char* - (Char* ('<![' | ']]>') har*)
妥当性制約: 条件付きセクション/パラメタ実体が厳密に入れ子をなすこと
条件付セクションの"<![","["又は"]]>"のいずれかがパラメタ実体参照の置換テキストに含まれるなら,
すべてが同一のパラメタ実体の置換テキスト に含まれなければならない。
条件付きセクションは,DTDの内部サブセット及び外部サブセットと同様に,完全な宣言,コメント,
処理命令又は入れ子になった条件付きセクションを,幾つか含んでよい。これらの間に,空白が現れても
よい。
条件付きセクションのキーワードがINCLUDEならば,条件付きセクションの内容はDTDの一部である。
条件付きセクションのキーワードがIGNOREならば,条件付きセクションの内容は論理的にはDTDの一
部ではない。キーワードをINCLUDEとする条件付きセクションが,キーワードをIGNOREとするより大
きな条件付きセクションに含まれるならば,外側及び内側の条件付きセクションの両方とも無視する。無
視される条件付きセクションの内容を解析するとき,キーワードに続く"["の後のすべての文字は,条件付
きセクションを開始する"<!["と終了する"]]>"を除き,この条件付きセクションの終了が見つかるまで無視
する。この処理において,パラメタ実体参照は認識されない。
条件付きセクションのキーワードがパラメタ実体参照ならば,XMLプロセサは条件付きセクションを取
り込むか無視するかを判断する前に,このパラメタ実体を展開しなければならない。
例を次に示す。
<!ENTITY % draft 'INCLUDE' >
<!ENTITY % final 'IGNORE' >
<![%draft;[
<!ELEMENT book (comments*,title,body,supplements・)>
]]>
<![%final;[
<!ELEMENT book (title,body,supplements・)>
]]>
4. 物理構造 XML文書は,一つ以上の記憶単位から構成する。これらの記憶単位を,実体という。すべ
ての実体は,内容 をもつ。文書実体及び外部DTDサブセットを除くすべての実体は,実体 名によって
特定する。 各XML文書は,文書実体と呼ぶ実体を一つもつ。XMLプロセサは,この文書実体から処理
を開始する。文書実体が,文書のすべてを含んでもよい。
実体は,解析対象実体又は解析対象外実体とする。解析対象実体の内容は,解析対象実体の置換テキス
――――― [JIS X 4159 pdf 25] ―――――
次のページ PDF 26
JIS X 4159:2005の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.240 : 情報技術(IT)の応用 > 35.240.30 : 情報,ドキュメンテーション及び出版業務におけるITの応用