

1つのタグや宣言の中で`'シングルクォーテーション'`と`"ダブルクォーテーション"`が混在するXMLは正しい構文でしょうか？

例えば下のXMLは  
`<Ex am=" 'シングルクォーテーション' と" ple=' "ダブルクォーテーション" が'>タグの属性の中で混在するが</Ex>`  
[W3Cの定義](https://www.w3.org/TR/xml/)通りと理解して問題ないでしょうか？

**質問の経緯**

下記のような記述のXMLファイルを使用して読込プログラムの動作チェックを行ったところ、1行目のプロローグでエラーになりました。

[code]

    <?xml version="1.0" encoding='UTF-8'?>
    <body>以下略</body>
    
[/code]

エラーの原因は`version="1.0" encoding='UTF-8'`でクォーテーションの種類が混在していたことです。

お行儀の悪いXML記述と承知しているのですが、W3Cの定義を読んでも **厳密な意味で**
間違っているのはXMLなのかプログラムなのか確証が持てませんでした。  
XML出力または読込プログラムのどちらかに改修依頼を出す際の判断基準を求めていることが質問の経緯です。

**調べたこと**

日本語翻訳版の[AttValue](http://w4ard.eplusx.net/translation/W3C/REC-
xml-20081126/#NT-AttValue)、[2.8
プロローグと文書型宣言](http://w4ard.eplusx.net/translation/W3C/REC-xml-20081126/#sec-
prolog-dtd)、[4.3.3
実体で使われる文字エンコーディング](http://w4ard.eplusx.net/translation/W3C/REC-
xml-20081126/#charencoding)には、BN記法(バッカス・ナウア記法)？で下記の定義があります。

[code]

    [10] AttValue ::= '"' ( [^<&"] | Reference )* '"'
    | "'" ( [^<&'] | Reference )* "'" 
    
    [23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
    [24] VersionInfo ::= S 'version' Eq ( "'" VersionNum "'" | '"' VersionNum '"' )
    
    [80] EncodingDecl ::= S 'encoding' Eq ( '"' EncName '"' | "'" EncName "'" )
    [81] EncName ::= [A-Za-z] ( [A-Za-z0-9._] | '-' )* /* ラテン文字しか含まないエンコーディング名 Encoding name contains only Latin characters */
    
[/code]

BN記法を良く分かっていませんが、上記の内容から属性に`'`と`"`のどちらも利用できると解釈しています。  
ただし混在に関する規定は見つかりませんでした。


CC BY-SA 4.0
2022-03-03T03:53:27.693
86662
2022-03-03T04:07:44.167
9820
question
xml
XML属性の囲い文字として'と"の混在は文法上許容されるか