[1]
>
:[DFN[[RUBY[整形式制約][せいけいしきせいやく]@en[well-formedness constraint]]]]:
[定義: すべての[[整形式]][[XML文書]]に適用される規則。[[整形式制約]]への違反は[[致命的誤り]]である。]

;; <IW:XML1:"#dt-wfc">

;;
[2]
[[整形式]]の条件は[[整形式]]の項を参照。

[3]
[[整形式制約]]違反のうちのいくつか
(例: [[実体]]が[[宣言]]されていること >>14、[[解析対象実体]] >>16、
[[再帰]]なし >>17)
は、[[外部実体]]を読まないと検出できません。

;; <IW:XML1:"#safe-behavior">

[5] ['''内部部分集合中のパラメーター実体''']: 
内部 [[DTD]] 部分集合では、
[[パラメーター実体参照]]はマーク宣言が出現可能な場所にのみ出現可能であり、
マーク宣言の内部には出現できない。 
(これは外部パラメーター参照や外部部分集合に出現する参照には適用しない。)

- [XML 1.0] <http://www.w3.org/TR/REC-xml#wfc-PEinInternalSubset>
- [XML 1.1] <http://www.w3.org/TR/xml11#wfc-PEinInternalSubset>

[6] ['''外部部分集合''']: [[外部部分集合]]は、
使用する場合には生成規則 [CODE(ABNF)[extSubset]] 
と一致しなければならない。

- [XML 1.0] <http://www.w3.org/TR/REC-xml#ExtSubset>
- [XML 1.1] <http://www.w3.org/TR/xml11#ExtSubset>

[8] ['''宣言間のパラメーター実体''']: [CODE(ABNF)[DeclSep]]
中のパラメーター実体参照の置換文は生成規則 
[CODE(ABNF)[extSubsetDecl]] と一致しなければならない。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#PE-between-Decls>
- [XML 1.1] <http://www.w3.org/TR/xml11#PE-between-Decls>

[9] ['''要素型名一致''']: 
[[終了タグ]]の要素型名は[[開始タグ]]の要素型名と一致しなければならない。

- [XML 1.0] <http://www.w3.org/TR/REC-xml#GIMatch>
- [XML 1.1] <http://www.w3.org/TR/xml11#GIMatch>

[10] ['''属性指定の一意性''']: 
同じ開始タグ又は[[空要素タグ]]に複数個の同じ属性を指定してはいけない。

-[XML 1.0] <http://www.w3.org/TR/REC-xml#uniqattspec>
-[XML 1.1] <http://www.w3.org/TR/xml11#uniqattspec>

[11] [(属性値で) '''外部実体への参照が無いこと''']:
属性値は直接であれ間接であれ、
外部実体への参照を含めることはできない。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#NoExternalRefs>
- [XML 1.1] <http://www.w3.org/TR/xml11#NoExternalRefs>

[12] ['''属性値に < を含まないこと''']: 
属性値中で直接又は間接に参照されている実体の置換文は 
[CODE(XML)[<]] を含んでいてはいけない。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#CleanAttrVals>
- [XML 1.1] <http://www.w3.org/TR/xml11#CleanAttrVals>

[13] ['''正当な文字''']: 
[[文字参照]]で参照される[[文字]]は生成規則 [CODE(ABNF)[[[Char]]]] 
に一致しなければならない。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#wf-Legalchar>
- [XML 1.1] <http://www.w3.org/TR/xml11#wf-Legalchar>

[14] ['''実体が宣言されていること''']: 
- DTD の無い文書
- [[外部引数実体参照]]を含まない内部部分集合だけの DTD の文書
- [CODE(XML)[standalone="yes"]] の文書

で、外部部分集合やパラメーター実体以外に出現する実体参照は、
その名前が外部部分集合やパラメーター実体中に出現しない実体 
([CODE(XML)[ENTITY]]) 宣言の名前と一致していなければならない  
(但し [CODE(XML)[amp]] などを除く)。

一般実体の宣言は、
それが属性の既定値の宣言で参照される前になければなりません。

[15] >>14 なお、外部部分集合又は[DEL[外部]]パラメーター実体で宣言された実体については、
妥当性を検証しない処理系はその宣言を必ずしも読んで処理する必要はありません。
そのような文書では、実体は宣言されていなければならないという規則は 
[CODE(XML)[standalone="yes"]] の場合のみ適用されます。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#wf-entdeclared>
- [XML 1.1] <http://www.w3.org/TR/xml11#wf-entdeclared>
- [XML 1.0 SE Errata] <http://www.w3.org/XML/xml-V10-2e-errata#E8>

[16] ['''解析実体''']: 
実体参照は非解析実体の名前を含んでいてはいけません。
非解析実体は [CODE(XML)[ENTITY]] 又は [CODE(XML)[ENTITIES]]
の属性値でのみ使えます。

-[XML 1.0] <http://www.w3.org/TR/REC-xml#textent>
-[XML 1.1] <http://www.w3.org/TR/xml11#textent>

[17] [(解析実体) '''再帰なし''']:
解析実体は直接又は間接に自身への参照を含んでいてはいけません。 

-[XML 1.0] <http://www.w3.org/TR/REC-xml#norecursion>
-[XML 1.1] <http://www.w3.org/TR/xml11#norecursion>

[18] [(パラメーター実体参照は) '''DTD の中''']:
パラメーター実体参照は DTD の中でのみ使えます。 

- [XML 1.0] <http://www.w3.org/TR/REC-xml#indtd> 
- [XML 1.1] <http://www.w3.org/TR/xml11#indtd> 

- [19] 妥当性を検証する処理系もしない処理系も、
その読んだ[[文書実体]]及び他の解析実体の XML 
仕様書の定める整形式制約への違反を報告しなければなりません。 
<http://www.w3.org/TR/REC-xml#proc-types>
- [20] 妥当性を検証しない処理系は、少なくても、内部 DTD 
部分集合を含む文書実体全体の整形式性を検査しなければなりません。 
<http://www.w3.org/TR/REC-xml#dt-validating>
- [21] >>20 妥当性を検証しない処理系は、 DTD 内部部分集合・パラメーター実体のうち、最初に読んでいないパラメーター実体を参照するところの前までの全ての宣言を処理しなければなりません。
-- [CODE(XML)[standalone="yes"]] の場合を除いて、
その続きの[[実体宣言]]および[[属性並び宣言]]を処理してはいけません。
<http://www.w3.org/TR/REC-xml#dt-use-mdecl>
-- [CODE(XML)[standalone="yes"]] の場合、処理しなければなりません。 
<http://www.w3.org/XML/xml-V10-2e-errata#E47>

[26] 多分、「妥当性を検証しない処理系は」ではなく、
「妥当性を検証しない処理系が外部実体を読まないときは」でしょうね。

