6

同じ文書内に 2 つの XML 宣言があるのは整形式の XML ですか?

<?xml version="1.0" encoding="UTF-8"?>
<a>
 <?xml version="1.0" encoding="UTF-8"?>
 <b>
  hello
 </b>
</a>

そうではないと思いますが、これを裏付ける情報源が見つかりません。

Extensible Markup Language (XML) 1.0から

定義: XML ドキュメントは、使用されている XML のバージョンを指定する XML 宣言で開始する必要があります。

「しなければならない」という厄介な言葉があります。理想的には、ドキュメントは XML 宣言で始まると言われています。ドキュメント内に別のものがあることについては何も言いません。

ドキュメント タイプの宣言は、ドキュメントの最初の要素の前に表示する必要があります。

これは近いですが、XML 宣言自体については触れていません。

4

1 に答える 1

9

整形式の XML で許可される XML 宣言は1 つだけであり、どこにいても先頭になければなりません

トップにいるに違いない

XML RecommendationdocumentWell-Formed XML Documentsセクションのの定義を参照してください。

[1]     document ::= prolog element Misc*

次にチェックしprologます:

[22]    prolog   ::= XMLDecl? Misc* (doctypedecl Misc*)?

そしてXMLDecl

[23]    XMLDecl  ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'

したがって、EBNFではドキュメントの先頭で XML 宣言が許可されていることがわかります。

唯一

処理命令...

[16]    PI       ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
[17]    PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))

PITarget...一般的には他の場所で発生する可能性がありますが、次のステートメントの定義により、2 番目の XML 宣言は除外されます。

「 XML 」、「 xml 」などのターゲット名は、この仕様のこのバージョンまたは将来のバージョンでの標準化のために予約されています。

于 2013-11-27T19:56:44.217 に答える