XML文書ではエスケープしなければならない文字は何ですか?そのようなリストはどこにありますか?
適切なクラスまたはライブラリを使用する場合、彼らはあなたのためにエスケープを行います。多くのXMLの問題は、文字列の連結が原因です。
わずか5つです。
" "
' '
< <
> >
& &
エスケープ文字は、特殊文字が使用されている場所によって異なります。
サンプルは W3C Markup Validation Service で検証できます。
安全な方法はテキストの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>
5つの特殊文字はすべて CDATA セクションでエスケープする必要があります:
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
5つの特殊文字はすべて、XML処理命令でエスケープしないでください:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
HTMLには 独自のエスケープコードのセット があり、より多くの文字をカバーしています。
おそらくこれは役立ちます。
SGML、HTML、およびXML文書では、文字データおよび属性値と呼ばれる論理的な構成要素は文字のシーケンスで構成され、各文字は直接(それ自体を表す)表現することができます。そのうちの2つのタイプがあります:数値文字参照と文字実体参照。この記事では、HTMLおよびXML文書で有効な文字実体参照をリストします。
その記事には、次の5つの定義済みXMLエンティティがリストされています。
quot "
amp &
apos '
lt <
gt >
World Wide Webコンソーシアム(w3C)の仕様によれば、 XML文書ではリテラル形式で表示されてはならない5文字があります 、マークアップ区切り文字として、またはコメント内で使用される場合を除き、処理命令、またはCDATAセクション。他のすべての場合では、これらの文字は、次の表に従って対応するエンティティまたは数値参照を使用して置き換える必要があります。
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
前述のエンティティは、XHTML 1.0で導入されHTML 4では宣言されていない - を除いて、HTMLでも使用できることに注意してください。このため、そして旧バージョンとの互換性を保つために、 XHTML仕様では代わりに ' の使用を推奨しています。
エスケープ文字はタグと属性で異なります。
タグの場合:
< <
> > (only for compatibility, read below)
& &
属性の場合:
" "
' '
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
アンパサンド文字(&)および左角かっこ(<)は、マークアップ区切り文字として使用される場合、またはコメント、処理命令、またはCDATAセクション内で使用される場合を除き、リテラル形式で表示されてはなりません。他の場所で必要な場合は、それぞれ数字参照、または文字列 "&amp;"と "&lt;"を使用してエスケープする必要があります。直角括弧(>)は、文字列 "&gt;"を使用して表すことができます。互換性のために、文字列 "]]>"の内容が文字列[]]> "の場合その文字列がCDATAセクションの終わりを示していないとき。
属性値に一重引用符と二重引用符の両方を含めることができるようにするには、アポストロフィまたは一重引用符( ')を "&"、二重引用符( ")を"&quot; "と表します。 ".
一般的に知られている5つの文字[<、>、&、 "、 ']に加えて、垂直タブ文字(0x0B)もエスケープします。これは有効なUTF-8ですが、有効なXML 1.0ではなく、さらに多くのライブラリ( libxml2)それを見逃し、黙って無効なXMLを出力します。
古くてよく寄せられる質問に対する新しい簡単な回答...
から要約: http://en.wikipedia.org/wiki/XML#Escaping
定義済みのエンティティは5つあります。
< represents "<"
> represents ">"
& represents "&"
' represents '
" represents "
「許可されているすべてのUnicode文字は、数字参照で表すことができます。」次に例を示します。
中
制御文字やその他のUnicode範囲の大部分は特に除外されています。つまり、それらはエスケープされたものでも直接的なものでもあり得ません。
状況によって異なります。コンテンツの場合、<と&、および]]>です(ただし、1文字ではなく3の文字列です)。属性値の場合は、<と&および "and 'です。CDATAの場合は、]]>です。