Has です。

        Thu, 25 May 2000 12:46:38 +0900 の
        [ruby-list:22905] Re: CGI::escape
        に関する返信です。

>
>> 余談ですが、HTMLのタグのエレメントでも「&"<>」を含む場合は
>> CGI::escapeHTML()する必要があるのですね。当然と言われれば当然なので
>> すが、先ほどRFC1866の以下の部分を読むまで、気づきませんでした。
>
>これは、RFC 1866 が勘違いしていると思われます。A エレメントの HREF 属
>性のデータ型は、実体参照などの行われない CDATA 型なので、& の解釈は行
>われず、逆に、展開されないという事は、実体参照で記述してはならないはず
>ですから。
>

これは実体参照が展開されます。

&はHTMLの名前文字に含まれないので、属性値指定を書く際には
属性値を直に書くのではなく属性値表記(引用符で囲んだ形)にす
る必要があります。
属性値表記では引用符の中身をRCDATAとして参照を展開するなど
した後で属性値になります。

---- 以下、JIS X 4151-1992 文書記述言語SGML
 (http://www.ncals.cif.or.jp/ncals/standards/SGMLindex.html)
から引用

 6.9.3 属性値指定

  属性値指定 = 属性値 | 属性値表記                 ―(33)
  属性値表記 = (lit, 置換可能文字データ, lit) |
         (lita, 置換可能文字データ, lita)          ―(34)

 属性値表記は,その中の参照を置換し,Ee及びRSを無視し,RE又はSEPCHARをSPACEに置換した上で,属性値として解釈する。

備考 属性値表記の解釈にあたっては,その属性の実際の宣言値とは無関係に,
          その属性が文字データであるものとして行う。

 文字データ以外の属性値は,その文字列の中に現れる2個以上連続するSPACEを1個
のSPACEに置換し,先頭及び末尾に現れるSPACEをすべて無視する。

備考 この箇条は,元の表記が何であるかによらない。例えば,CDATA実体である
      かSDATA実体であるかによらない。

6.9.3.1 最小化 属性値指定は,名前文字だけからなり,しかも次の条件を満たす場合,属性値として
もよい(属性値表記としなくてもよい。)。

(1)その属性値が属性定義並びに現れている。
(2)SGML宣言で“SHORTTAG YES”と指定してある。

---- ここまで

---------------------------------
Has.
---------------------------------