1. ホーム
  2. xml

[解決済み] XML本文の二重引用符/一重引用符を置換する必要がありますか?

2022-02-19 18:25:43

質問

私の専門用語がずれていたら、ここで訂正してください。

XMLの5文字代入は。

  • & ( & )
  • &lt; ( < )
  • &gt; ( > )
  • &quot; ( " )
  • &apos; ( ' )

これらの置換はすべて要素テキストで行われる必要があるのでしょうか?それとも属性テキストだけですか?(用語の訂正?)

例:これは有効なXMLか?

<myelement>x && y</myelement>
<myelement>And I quote, "no"</myelement>

&gt;&lt; は、この文脈で置き換えることが明白であるように見えますが、置換ルールがXML文書全体に対してグローバルなものなのか、文書の異なる部分に対して異なるルールが適用されるのか(例えば、cdataセクションは異なるルールを適用します)、よく分かりません。

仮定:これは無効なXMLである。

<myelement field="no & allowed here"/>
<myelement field="no <> allowed here"/>

引用符は属性の区切り、<>は要素のテキストの区切りとして明らかなものです。

どのように解決するのですか?

要素コンテンツでは、エスケープする必要があるのは &< シングルクォートもダブルクォートもエスケープする必要はありません。 > の一部として現れる場合のみです。 ]]> (多くの人は無条件に置き換える。その方が単純だから)。

属性コンテンツでは、エスケープする必要があるのは &< と、どちらかの ' または " 属性区切り文字として使用されたものによって異なります。

で始まるエンティティ & は、コメントや CDATA セクション、要素名や属性名では認識されないため、これらのコンテキストでは特殊文字をエスケープしてはいけません。