From: OHARA Shigeki Date: 2000-05-25T21:52:13+09:00 Subject: [ruby-list:22920] Re: CGI::escape 大原です。 wakou@fsinet.or.jp (Wakou Aoyama) さんの、 "Thu, 25 May 2000 12:46:38 +0900" にだした、 「[ruby-list:22905] Re: CGI::escape」というメールにて…… : > > 余談ですが、HTMLのタグのエレメントでも「&"<>」を含む場合は > > CGI::escapeHTML()する必要があるのですね。当然と言われれば当然なので > > すが、先ほどRFC1866の以下の部分を読むまで、気づきませんでした。 > > これは、RFC 1866 が勘違いしていると思われます。A エレメントの HREF 属 > 性のデータ型は、実体参照などの行われない CDATA 型なので、& の解釈は行 > われず、逆に、展開されないという事は、実体参照で記述してはならないはず > ですから。 HTML 4.01 の「6.2 SGML basic types」を超訳すると、CDATA は、 - 属性値では、実体参照が展開される。 - STYLE タグや SCRIPT タグの要素では、実体参照の展開は行なわれない。 ということのようです。 HTML 2.0 はわかりませんが、HTML 3.2 には同様の説明があります。 > HTML 2.0, HTML 3.2 でも同じく CDATA となっています。また、少なくとも、 > 手元の Lynx, Netscape, mozilla, w3m などでは & のままで通りますし。 これは、多分、各ブラウザが「良きに計らって」くれているだけだと思います。 というか、たまたま、対応する実体参照が存在せず、解釈できなかったので、 「&」のままほっといてるだけなんだと思います。 なので、URI に「&」を含む場合には、 とか のように文字実体参照で記述しなくてはいけません。 と、HTML 4.01 には明記されています。 # 間違ってたらすいません、御指摘ください……。 ---- OHARA Shigeki (大原重樹)