名前 | 対象 | |
---|---|---|
>>2 | 根要素型 | 文書実体 |
>>3 | 宣言・引数実体が適切に入れ子になっていること | DTD |
>>4 | 単独文書宣言 | 文書実体 |
>>5 | 要素妥当 | 文書実現値 |
>>6 | 属性値型 | 文書実現値 |
>>7 | 一意な要素型宣言 | DTD |
>>8 | 群・引数実体が適切に入れ子になっていること | DTD |
>>9 | 型重複なし | DTD |
>>10 | 識別子 | 文書実現値 |
>>11 | 1要素型1識別子 | DTD |
>>12 | 識別子属性既定値 | DTD |
>>13 | 識別子参照 | 文書実現値 |
>>14 | 実体名 | 文書実現値 |
>>16 | 名前字句 | 文書実現値 |
>>17 | 記法属性 | 文書実現値 |
>>18 | 1要素型1記法 | DTD |
>>19 | 空要素記法なし | DTD |
>>35 | 重複字句なし | DTD |
>>20 | 列挙 | 文書実現値 |
>>21 | 必須属性 | 文書実現値 |
>>22 | 属性[既定値]]が構文的に正しいこと | DTD |
>>23 | 固定属性既定値 | 文書実現値 |
>>25 | 条件区間・引数実体が適切に入れ子になっていること | DTD |
>>26 | 実体が宣言されていること | 文書実現値・DTD |
>>27 | 記法が宣言されていること | DTD |
>>28 | 一意な記法名 | DTD |
>>37 | xml:lang | 文書実現値 |
Name
は、根要素の要素型と一致しなければならない。 (<http://www.w3.org/TR/REC-xml#vc-roottype>)apos
, lt
, gt
, quot
, apos
を除く。) への参照が文書中にある場合、standalone
) の値は no
でなければならない。 <http://www.w3.org/TR/REC-xml#vc-check-rmd>S
を CDATA マーク区間とすることはできないのに注意。 <http://www.w3.org/TR/REC-xml#elementvalid>ID
型の属性の値は生成規則 Name
に一致しなければならない。その値は1つの文書中で複数回出現してはならない。 <http://www.w3.org/TR/REC-xml#id>ID
型の属性は置けない。 <http://www.w3.org/TR/REC-xml#one-id-per-el>ID
型の属性の既定値宣言は #IMPLIED
又は #REQUIRED
でなければならない。 <http://www.w3.org/TR/REC-xml#id-default> (ID
型属性の既定値は指定できない。)ID
型の属性の値は生成規則 Name
に、 IDREFS
型の値は Names
に一致しなければならない。各 Name
はその文書中のどれかの要素の ID
型属性の値と一致していなければならない。 <http://www.w3.org/TR/REC-xml#idref>Name
と一致していなければならない。NMTOKEN
型の値は生成規則 Nmtoken
, NMTOKENS
型の値は Nmtokens
に一致していなければならない。 <http://www.w3.org/TR/REC-xml#nmtok>NOTATION
) 型の属性の値は(属性)宣言に含まれる記法名のいずれかと一致していなければならない。全ての記法名は宣言されていなければならない。 <http://www.w3.org/TR/REC-xml#notatn>NOTATION
型属性は存在できない。 <http://www.w3.org/TR/REC-xml#OneNotationPer>EMPTY
と宣言された要素に NOTATION
型の属性は存在できない。 <http://www.w3.org/TR/REC-xml#NoNotationEmpty>Nmtoken
値の一つと一致しなければならない。 <http://www.w3.org/TR/REC-xml#enum>#REQUIRED
である場合、その要素型の要素は全てその属性を指定されていなければならない。 <http://www.w3.org/TR/REC-xml#RequiredAttr>ENTITY
型の属性値でその既定値の名前を持つ外部非解析実体が宣言されているかは、属性の既定値が実際に使われる (補完される) ときに初めて検証される。 <http://www.w3.org/XML/xml-V10-2e-errata#E9>#FIXED
がある場合、その属性の全ての実現値はその既定値と一致していなければならない。
<http://www.w3.org/TR/REC-xml#FixedAttr> <![
, [
, ]>
のいずれかが引数実体参照の置換文に含まれる場合、他の全てが同じ置換文に含まれていなければならない。 <http://www.w3.org/TR/REC-xml#condsec-nesting>amp
なども宣言するべきです。引数実体は参照される前に、一般実体は直接又は間接に属性の既定値の宣言で参照される前に宣言されていなければなりません。 (詳しくは仕様書参照。) <http://www.w3.org/TR/REC-xml#vc-entdeclared>Name
は記法名と一致しなければなりません。 <http://www.w3.org/TR/REC-xml#not-declared>NotationType
属性宣言の記法名や単一の Enumeration
属性宣言の Nmtoken
は、全て異なるものでなければなりません。 <http://www.w3.org/XML/xml-V10-2e-errata#E2>xml:lang
] (削除済み制約) xml:lang
属性の値は、 NMTOKEN
として正規化した後に、生成規則 [33] に一致しなければならない。 (FE errata E31 <http://www.w3.org/XML/xml-19980210-errata#E31> で追加, E73 <http://www.w3.org/XML/xml-19980210-errata#E73> で (明記されていないものの) 削除。削除理由は、 「XML 処理系の立ち入るべき水準ではない」。)[41] XML文書の条件は整形式たることですから、妥当性制約が満たされないとしても、XML文書たりえます。ただし、妥当性制約への違反は誤りです (>>1) から、処理した結果は未定義です。
[42] >>41 ということは、例えば妥当でない要素が出てきたらそこで処理終了しても構わないということになります。妥当性検証を行う処理器なら普通な動作ですが、行わない処理器でもそうしてもいい、と。 (例えば要素内容の検証はしないけど強制空要素の検証はする、とか。)
[43] >>3,>>8,>>25 の引数実体との入れ子に関する制約も妥当性制約ということは、入れ子関係がおかしくても整形式たり得るということだ。正しく処理される保証はないだけで。
妥当性検証はしない処理器でも、これくらいの誤りの検出はしておいた方が実装が楽かもしれない (し、そうでないかもしれない)。
[44]
SGML互換性のために属性値の列挙の群と引数実体が適当に入れ子になっていること
という条件が必要なような。。。
(名無しさん)
[29] 妥当性を検証する処理系は、利用者の任意選択により、 DTD の宣言により表現された制約への違反及び XML 仕様書の妥当性制約への違反を報告しなければなりません。 <http://www.w3.org/TR/REC-xml#dt-validating>
この条件を満たすため、妥当性を検証する処理系は DTD 全体と全ての外部解析実体を読まなければなりません。 <http://www.w3.org/TR/REC-xml#dt-validating>
[36] 妥当性制約はXML//整形式制約に加えての追加の制約です。 XML 文書は必ずしも妥当性制約を満たしている必要はありませんが、 できるなら満たすことが望ましいでしょう。特に、宣言の完全性 (DTD で定義されていること) 以外の制約は必ず満たすべきです。