
このQ&Aは役に立ちましたか?
4人が「このQ&Aが役に立った」と投票しています
回答(4)
&はHTMLの中では、<,>,"とともに、直接記述できない文字です。&は文字実態参照や数値文字参照に使われるエスケープ文字ですから、それ以外で登場するとブラウザは、それの解析のために大変複雑な作業をする羽目になります。
>システムで吐き出している部分のため変更が難しいといわれました。
そりゃシステムが悪い・・言い訳になりません。なんのためのシステムですか?HTML
を作るためじゃないの?
【引用】____________ここから
また、著者は、「&」の代わりに「&」(ASCII十進38)を用い、文字参照の冒頭――文字実体参照の開始区切り子――と誤解されるのを避けるべきである。 CDATA型の属性値には文字参照が出現できるので、著者は属性値においても「&」を用いる必要がある。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ここまで[HTML Document Representation (ja)( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/charset.html#h-5.3.2 )]より
仕様書にそう書いてある。「と誤解されるのを避けるべきである。」は仕様書の中でも格段に強い意味をあらわしていますよ。
投稿日時 - 2011-01-09 23:56:21
HTML文字実体参照は大雑把にいえば、&[0-9a-zA-Z]+; の生成規則を持ちます。
http://www.y-adagio.com/public/standards/jis_xml/main.html#sec-references
& は "&" と解釈されます。
これが正式な記法ですが、実際には & と記入しても "&" と解釈される場合があります。この挙動が問題です。
------
下記に挙げる <a> のリンク先を確認してみてください。
<p><a href="./test?foo&=test"=hoge">test</a></p>
リンク先は ./test?foo&=test%22=hoge になります。
& は & に展開され、" は " (パーセントエンコードすれば、"%20" )に展開されているためです。
このように、GETパラメータでHTML文字実体参照が展開されると、Web制作者が意図しないURLにリンクされる場合があります。
実体参照として予約されている文字を使わなければいいと思われるかもしれませんが、実体参照として定義されている文字は覚えきれないほどの数が定義されています。
http://www.w3.org/TR/html5/named-character-references.html#named-character-references
現実的には、& をエスケープせずに使うために全てのGETパラメータが期待通りの動作になっているか検証する必要があると思います。
検証に時間をかけるか、システムの修正に時間をかけるか、ですね。
投稿日時 - 2010-08-26 20:41:26