1027

XML ドキュメントでエスケープする必要がある文字は何ですか? またはそのようなリストはどこにありますか?

4

10 に答える 10

1503

適切なクラスまたはライブラリを使用すると、それらがエスケープを実行します。多くのXMLの問題は、文字列の連結によって引き起こされます。

XMLエスケープ文字

5つしかありません:

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

文字のエスケープは、特殊文字が使用されている場所によって異なります。

例は、W3C MarkupValidationServiceで検証できます

文章

安全な方法は、テキスト内の5文字すべてをエスケープすることです。ただし、3文字"'あり>、テキストでエスケープする必要はありません。

<?xml version="1.0"?>
<valid>"'></valid>

属性

安全な方法は、属性の5文字すべてをエスケープすることです。ただし、>文字を属性でエスケープする必要はありません。

<?xml version="1.0"?>
<valid attribute=">"/>

引用符が次の'場合、属性で文字をエスケープする必要はありません。"

<?xml version="1.0"?>
<valid attribute="'"/>

同様に、引用符が次"の場合、属性でエスケープする必要はありません。'

<?xml version="1.0"?>
<valid attribute='"'/>

コメントコメント

コメントで5つの特殊文字すべてをエスケープしてはなりません。

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

CDATAセクションでは、 5つの特殊文字すべてをエスケープしてはなりません。

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

処理命令

XML処理命令では、5つの特殊文字すべてをエスケープしてはなりません。

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

XMLとHTML

HTMLには、より多くの文字をカバーする独自のエスケープコードのセットがあります。

于 2009-07-07T12:09:31.850 に答える
96

おそらくこれは役立つでしょう:

XMLおよびHTML文字エンティティ参照のリスト

SGML、HTML、およびXMLドキュメントでは、文字データおよび属性値と呼ばれる論理構造は、各文字が直接現れる(それ自体を表す)か、文字参照と呼ばれる一連の文字で表すことができる文字のシーケンスで構成されます。そのうち、数値文字参照と文字エンティティ参照の2つのタイプがあります。この記事では、HTMLおよびXMLドキュメントで有効な文字エンティティ参照を一覧表示します。

この記事には、次の5つの事前定義されたXMLエンティティがリストされています。

quot  "
amp   &
apos  '
lt    <
gt    >
于 2009-07-07T12:09:50.803 に答える
80

World Wide Web Consortium (w3C) の仕様によると、マークアップ区切り文字として、またはコメント、処理命令、または CDATA セクション内で使用される場合を除き、XML ドキュメントにリテラル形式で表示してはならない 5 文字があります。 . それ以外の場合はすべて、対応するエンティティまたは次の表に従って数値参照を使用して、これらの文字を置き換える必要があります。

Original CharacterXML entity replacementXML numeric replacement
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

'を除いて、前述のエンティティは HTML でも使用できることに注意してください。XHTML 1.0 で導入され、HTML 4 では宣言されていません。このため、レトロ互換性を確保するために、XHTML 仕様では ' の使用を推奨しています。代わりは。

于 2013-07-03T12:38:30.517 に答える
27

一般的に知られている5文字[<、>、&、 "、および']に加えて、垂直タブ文字(0x0B)もエスケープします。これは有効なUTF-8ですが、有効なXML 1.0ではなく、多くのライブラリでさえも有効です。 (移植性の高い(ANSI C)ライブラリlibxml2を含む)それを見逃し、無効なXMLをサイレントに出力します。

于 2012-04-25T13:38:03.043 に答える
14

要約: XML、エスケープ

次の 5 つの定義済みエンティティがあります。

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

「許可されているすべての Unicode 文字は、数字参照で表すことができます。」例えば:

&#20013;

ほとんどの制御文字とその他の Unicode 範囲は明確に除外されています。つまり、(私が思うに) エスケープまたは直接のどちらでも発生することはありません。

XML で有効な文字

于 2014-08-15T07:53:58.817 に答える
4

それは文脈に依存します。内容については、<&、および]]>です (ただし、1 文字ではなく 3 文字の文字列です)。

属性値の場合、それは<&"、および'です。

CDATA の場合は]]>です。

于 2015-06-04T14:36:52.250 に答える