コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

HTMLメールでエスケープに使われる & の出典元を軽く調べてみた

AMPっていうとGoogleが提唱する⚡のほうがひっかりやすくなっててググラビリティがすごい低くなっていたので軽く調べてみたメモ

&amp の出元

アンパサンドのエスケープようの記述方法ではあるのですが、その流れを調べた。

おそらく一番最初の出元はXML

アンパサンド文字(&)と左山括弧(<)は、マークアップ区切り子として使われる場合、あるいはコメント、処理命令、CDATAセクションの中に現れる場合を除き、直接現れてはならない(must not)。もしそれらの文字を他の場所で使わなければならない場合は、数値による文字参照を使うか、それぞれ文字列"&amp;"と"&lt;"を使うかしてエスケープしなければならない(must)。右山括弧(>)は、通常はそうする必要は無いが、文字列"&gt;"で表しても良い。但し、文字列"]]>"がCDATAセクションの終わりを意味する為に現れたのでなければ、互換性の為に、その文字列の中に現れる右山括弧を"&gt;"か文字参照を使ってエスケープしなければならない(must)。

Extensible Markup Language (XML) 1.0 (第五版)

そしてその流れを汲む、XHMTLの仕様

属性値にアンパサンドが含まれているとき、アンパサンドはキャラクタ実体参照(例. "&amp;")として表記しなければならない。たとえば、a 要素の href 属性が、パラメータをとるCGIスクリプトを参照しているときには、http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user ではなく http://my.site.dom/cgi-bin/myscript.pl?class=guest&\;name=user と表記しなければならない。

XHTML 1.0: 拡張可能ハイパーテキストマークアップ言語

で、最終的にHTMLメールのスタンダードなヘッダがXHTMLなので使われるようになるという…

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

参考