バグ?無知?Another HTML lintの採点で不明な実体参照エラーが発生

このQ&Aのポイント
  • バグか無知か?Another HTML lint(htmllint.cgi 1.17 / htmllint.pm 3.17)を使用したところ、不明な実体参照エラーが生じました。
  • 具体的には、`&c`という不明な実体参照が4行目で検出されました。
  • このエラーがバグなのか、それとも私の知識不足なのか、教えていただきたいです。
回答を見る
  • ベストアンサー

これはバグか僕の無知か。(Another HTML lintの採点)

1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2. <html> 3. <head> 4. <meta http-equiv="Refresh" content="0;URL=mypage.php3?n=12345&amp;c="> 5. <title>教えてgoo-リダイレクト</title> 6. </head> 7. <body> 8. 9. <p> 10. 11. 自動で移動しない場合は 12. <a href="mypage.php3?n=12345&amp;c=">マイページ</a> 13. アクセスしてみてください。 14. 15. </p> 16. 17. </body> 18. </html> をAnother HTML lint(htmllint.cgi 1.17 / htmllint.pm 3.17)にかけた所、 3: line 4: `&c` は不明な実体参照です。 → 解説 114 3: line 4: `&c` は不明な実体参照です。 → 解説 114 (ほかは省略) というエラーが帰ってきました。 これは、バグでしょうか? それとも私の知識不足でしょうか? ----- http://oshiete1.goo.ne.jp/kotaeru.php3?q=1013847 の#3への補足も読んでいただけると幸いです

  • HTML
  • 回答数1
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • RAPTsong
  • ベストアンサー率42% (74/175)
回答No.1

URLの '&' を '&amp;' とするのが正しいはずです。 The W3C Markup Validation Service http://validator.w3.org/ で確認したところ、やはり、 '&amp;' が正しいとされました。 もっとも、エンコーディングを指定しなければチェックしてくれませんが。 3.の次に次行を追加して確認。 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

参考URL:
http://validator.w3.org/
himajin2005_RC4
質問者

お礼

お礼欄に書くのも変ですが、訂正 --------------- >よく考えたら「Refresh」をHTTPヘッダにしない理由が >なくなってしまいました(アホ>僕) なので <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> というご指摘の文を挿入します -----

himajin2005_RC4
質問者

補足

>3.の次に次行を追加して確認。 あ、忘れていたわけではないんです。 が、大ボケをかましてしまいました。 その一文を外したのは 「正しいHTTPヘッダを送れば必要ないな」 という理由からだったのですが、 よく考えたら「Refresh」をHTTPヘッダにしない理由が なくなってしまいました(アホ>僕) さて、 >URLの '&' を '&amp;' とするのが正しいはずです。 そのために URL=mypage.php3?n=12345&amp;c=             ----- 4行目の部分はそれを考えて書いたものです。 URL=mypage.php3?n=12345&amp;amp;c=             --------- としろ、ということでしょうか? 実際これを施すと Another HTML lintでは、エラーは出なくなりました。 http://www.ne.jp/asahi/minazuki/bakera/html/reference/dataformat では >引用符で括られた >属性値の中身は RCDATA として解釈されます。 とあるので何か違和感があるのですが・・・・ W3CのMarkup ValidatorはDTD に従って文法をチェックするだけなので 上記二つのどちらもValidになってしまいます。

関連するQ&A

  • HTML文法

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head><title></title></head> <body> <dl> <dt>aaa <dt>aaaa <dt>aaaaa </dl> </body> </html> のdl~が http://openlab.ring.gr.jp/k16/htmllint/htmllint.html で間違いではないのはなぜですか?

  • PHPの中にHTMLを入れるには

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <body> <?php $test = てすと; print '<p>$testしています。</p>'; ?> </body> </head> 「てすとしています。」と書き出したいのですが、このソースだと 「$testしています。」と表示されてしまいます。 うまく表示するにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • HTMLの構文

    HTMLの構文ミスをhttp://htmllint.itc.keio.ac.jp/htmllint/htmllint.cgi こちらのサイトでチェックしていったのですが、 他のは調べたりして解決してきたのですが、 (1)<BODY> は </HEAD> の直後に続かなければなりません。 (2)<BODY> は <HTML>~</HTML> 内に1度しか書けません。12行目にもありました (3)<FONT> の COLOR 属性の色指定と <BODY BGCOLOR> の色は明度差(59.007)と色差(306)が不十分です の3つがどのように直すのか良く分かりませんでした。 3つ目については、めちゃくちゃあります お願いします!

    • ベストアンサー
    • HTML
  • PHP4とPHP5のGETでの値引き渡し および &amp; と & の使い分けについて

    PHP4では、 http://mydomain/test.php?a=1&amp;b=2 として、 test.php内で、 print "a=".$a.":"."b=".$b; のとき、 a=1:b=2 と表示していました。 PHP5に移行したところ、$_GETを使わないといけないということで、 print "a=".$_GET["a"].":"."b="._GET["b"]; としたところ、 a=1:b= となってしまい、bの値が取得できません。 そこで、 http://mydomain/test.php?a=1&amp;b=2 ↓ http://mydomain/test.php?a=1&;b=2 つまり、 「&amp;」の実体参照から「&」に変えると、 print "a=".$_GET["a"].":"."b="._GET["b"]; で a=1:b=2 と表示できます。 Another HTML-lintの解説では、&amp;でなくてはいけないとかいてありますが、php5ではなぜ、&amp;では$_GETに値を引き渡せないのでしょうか? (Another HTML-lintの解説) http://openlab.ring.gr.jp/k16/htmllint/explain.html#bad-entity ご存知の方が居られましたら、ご教示ください。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ファイルの一部をhtmlにしたい

    初心者です。 PHPを使ってできるかわからないのですが、 CGIで出力されたファイル(a.dat)の一部を違うHTMLファイル(b.html)にしたいと思っています。 この場合どうやったらいいでしょうか? CGIの掲示板などをせっちするのはできるのですが、 PHPは初めてです。できるかどうかわかりませんが 質問させてください。よろしくお願いします。 ---a.dat----- aaaa bbbb cccc ------------ ---b.html---- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS" /> <meta name="robots" content="noarchive" /> <title>pickup</title> </head> <body> bbb </body> </html> ---------------

    • 締切済み
    • PHP
  • エクセルでHTMLタグをそのままコピペしたい

    エクセルでHTMLタグをそのままコピペしたいです メモ帳のHTMLタグをエクセルにコピペすると <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head><title>ABC</title></head> <body> <p>あああ</p> <p>123</p> </body> を仮にコピペしたら あああ 123 になってしまいます そのままコピペするにはどうすればいいでしょうか?

  • HTMLの文法チェックをするとCSS関連でエラーが出て困っています。

    http://validator.w3.org/ http://htmllint.itc.keio.ac.jp/htmllint/htmllint.html でHTMLの文法チェックをすると, <body><style TYPE="text/css"><!-- という行があるとエラーが出ます。 実際のHTMLは外部スタイルシートを使っているのですが <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="content-style-type" content="text/css"> <title>タイトル</title> <meta name="Keywords" content="キーワード "> <meta name="Description" content="内容説明"> <link rel="stylesheet" href="./css.css" type="text/css"> </head> <body> <div id="page"> 以下略 であり,<body>タグの後ろは<div>タグなのですが,何故かそう認識されます。 スタイルシートの指定がおかしいのかと考えたのですが, いくら検索しても<head></head>間に <link rel="stylesheet" href="./css.css" type="text/css"> を入れるとしか書いてなく理由がわかりません。 ちなみにcss.cssの内容は *{} というような内容の羅列のみで,その他の情報は一切入れていません。 どこがおかしい点なのかわからず悩んでおります。 理由のわかる方いましたら是非ご教授願います。

    • ベストアンサー
    • HTML
  • PHPで動的にHTMLを出力したときの現象

    サーバは自分で立てたcentOS5.4(i386版)を使用しており、そこでホームページの作成をしております。 ホームページは、PHP5+XHTML+CSS+JavaScriptを使用しており、それぞれ別ファイルで作成してあります。 アクセス先はPHPで、そのPHP内にテンプレートを表示する処理を記述してあるのですが、PHPで動的に表示した状態のソースを見ると、生のHTMLの内容と違った状態で表示されてしまいます。 生のHTMLと動的に出力したHTMLのソースは下記の通りです。 生のHTML ================= <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> <head> ・ ・ ・ 動的のHTML ================= ?????????<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> ・ ・ ・ 動的に出力した状態ですと、ソースの最初に"?????????"という文字が表示されてしまいます。 PHPやHTMLなど、全てのファイルは 文字コード:UTF-8 で、HTMLとCSSは 改行コード:CRLF で、その他のPHPやJavaScriptは 改行コード:LF で作成しております。 php内では、 まずテンプレートを"openFile"で開き、 文字列置換($bodyはテンプレートファイル) $body = str_replace("\\", "\\\\", $body); $body = str_replace("\"", "\\\"", $body); eval("\$body = \"$body\";"); をして、最後に mb_http_output("UTF-8"); header("Content-type: text/html;charset=UTF-8"); print($body); としてあります。 文字コードの関係で文字化けを起こしているため、最初に"?????????"とソースに表示されてしまっているのかと思うのですが、どこが原因なのか分かりません。 原因がお分かりになる方、同じ現象になったことのある方いらっしゃいましたら、ご教授のほどお願い致します。

    • ベストアンサー
    • HTML
  • エラーメッセージについて

    Parse error: syntax error, unexpected $end in C:\xampp\htdocs\check.php on line 25 とでますが、line 25(一番下の行)が間違っていると言われ、プログラムさえ書いていません。 PHPを学ぶチャレンジをしている最中です。下記のように書きました。 -------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; if($nickname==") { print'ニックネームが入力されていません'; } else { print'ようこそ'; print $nickname; print'様'; } ?> </body> </html> -------- この下が line 25 です。 よろしくお願いいたします。

  • HTML-lintでのエラーについて(実体参照エラー)

    こんにちは。 自分で書いたHTMLをHTML-lintでチェックすると 「`&q` は不明な実体参照です。」というエラーと 「`&lr` は不明な実体参照です。」というエラーが出て 95点にしかなりません。 で、そのようなものを書いた記憶がなく 確認してみると、Googleの検索結果ページを リンクした部分にそれがありました。 たとえばGoogleで「教えて」で検索すると その結果ページは以下のようなアドレスになります。 http://www.google.co.jp/search?hl=ja&q=%E6%95%99%E3%81%88%E3%81%A6&btnG=Google+%E6%A4%9C%E7%B4%A2&lr= この中にある「&q」「&lr」がいけないと 言われているわけですが、 こちら側でどうにか対処することは できるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML