- 締切済み
HTML Validator でURL内の&がエラーになる件
HTML Validator でURL内の&がエラーになる件 HTML Validatorで、URL内で使用されている&を&にするよう指示がでるのですが、 システムで吐き出している部分のため変更が難しいといわれました。 このHTML Validatorのエラーについて解消する必要性はどの程度あるのでしょうか? 経験のある方いらっしゃいましたらご教示いただければ幸いです。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
&は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 )]より 仕様書にそう書いてある。「と誤解されるのを避けるべきである。」は仕様書の中でも格段に強い意味をあらわしていますよ。
- think49
- ベストアンサー率59% (285/482)
#2 です。 > " は " (パーセントエンコードすれば、"%20" )に展開されているためです。 間違えました。 パーセントエンコードすれば、%22 ですね。%20 は SPACE でした。
- think49
- ベストアンサー率59% (285/482)
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パラメータが期待通りの動作になっているか検証する必要があると思います。 検証に時間をかけるか、システムの修正に時間をかけるか、ですね。
- ganko3
- ベストアンサー率67% (118/174)
試しに&を&で置換してみたらいかがでしょうか。 うまく動きませんか。 自分のサイトの場合、FC2アクセス解析HTMLの&を&で置換して問題なく解析は動いています。 うまく動かない場合はHTML Validatorのエラーを無視することです。 文法エラーですからだれにも迷惑をかけません。