• ベストアンサー

HTML Validatroを使用して警告がでました。そんな時の処理方法が分かりません。

初めて、HTML Validator というミスをチェックしてくれるソフトを教えてもらいました。早速実行してみましたら、沢山警告が出てきましたが。どこをどう処理してよいのか・・わかりません。まだ初心者なのでできれば 分かりやすい御説明をよろしくお願いします。 警告: <meta> element not empty or not closed 警告: <img> element not empty or not closed 警告: content occurs after end of body などの警告表示が出ますが、どう処理して修正したらよいのかさっぱり分かりません。 たとえば、<img>のところで警告が表示された所をひとつ記述させていただきます。 <p class="kuuhaku"><img src="oll-img/sign02.gif" width="20" height="20" alt="hana">家族みんなのそれぞれのページへリンクします <img src="oll-img/sign02.gif" width="20" height="20" alt="hana">沢山のかわいい写真を掲載しています。</p> こんな感じです。どこを修正したらよいのでしょうか? 教えてください。よろしくお願いします。

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

  • ベストアンサー
  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.3

以前にFirefox Firebugで回答した者です。その後お役に立っているでしょうか? NO.1.2さんの回答で完璧ですが、 おそらく相当数の間違いがあると思われるので それらのHTMLを全て直すのも大変でしょう。 さて、 逆に考えると指摘箇所を修正するのではなく、 DTD DOCTYPE で XHTML に合わすのではなく、HTML の仕様・宣言にしてやれば、link meta img br hr 等の閉じスラッシュ を書かなくても良いわけです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> とか、他にもありますけど。 これは、好みや仕様の問題もあるのでお好きなように。 この辺は、XHTML と HTML の違いを調べて下さい。 因みに、ここの goo とか okwave でも同じく間違った仕様なのです・・・ 真似しないように。 最後の end of body は問題外です・・・

kinako4gou
質問者

お礼

ありがとうございます。 以前もお世話になったのですね。 以前は とても参考になり、お陰様で Firefox を活用させていただいて がんばって地道に勉強しております。 今回は、逆発想もなるほど・・・かなりのページ数になるので、これも一度試してみたいと思いました。  でも、これからは、htmlよりも xhtmlを勉強していった方がいいのですかね。 また お世話になるかもしれません。その時はよろしくお願いします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • abril
  • ベストアンサー率69% (388/560)
回答No.2

"<meta> element not empty or not closed" "<img> element not empty or not closed" 「<meta>(<img>)が空でないもしくは閉じていない」 meta要素・img要素は共に内容を持たない空要素(例えば他の要素の用に”<p>内容</p>”という記述にはならない、という事です)なので、他の要素の様に終了タグというものが存在しません。なので、HTMLでは、単に"<img src="oll-img/sign02.gif" width="20" height="20" alt="hana">"という記述で良いのですが、XHTMLでは必ずこれらの要素も「閉じて(closed)」いなければならないという文法上のルールがあります(br要素/hr要素/input要素、等々も同様)。 これらの空要素の「閉じ方」としては、">"で閉じる前に”半角スペース+スラッシュ"を付け加えるのが一般的なやり方です。 つまり、"<img src="oll-img/sign02.gif" width="20" height="20" alt="hana" />"とすればいいわけです。 この警告が出るという事は、質問者様のコンテンツがHTMLではなくXHTMLだとファイル内で宣言されているにも関わらず、imgやmetaの記述が上記の様なXHTMLのルールに則っていない、という状態であると推測されます。 "content occurs after end of body" 字面を見る限りでは「bodyが終了した後にコンテンツがある」という意味ですから、</body>の後に何らかの要素が記述されている、という警告でしょう。文法上、</body>の後にはいかなるタグもテキストも入る事はできませんので、続けて</html>で終了していなければいけません。 間違って</body>の後に何か</html>以外の要素が記述されてしまっていませんか? 英語が難しければ、ANo.1様もお奨めしているAnother HTML-lint gatewayの方を使用した方が楽でしょう。しかも、こちらの方がW3CのValidatorでは指摘されない様な細かいレベルまで厳しくチェックしてくれますので、非常に役に立ちます。

kinako4gou
質問者

お礼

大変 分かりやすいご指摘ありがとうございます。 確かにbodyが終了した後にコンテンツがありました・・何も入れてはいけないのですね。知りませんでした… 早速修正してみます。 皆さんが お勧めしてます Another HTML-lint gateway はすごいですね。英語がさっぱりな私には 大変重宝すること間違いないです。 ありがとうございました。 がんばります。

すると、全ての回答が全文表示されます。
回答No.1

英語で警告されてもわかんないですよね。 http://openlab.ring.gr.jp/k16/htmllint/htmllint.html こことかだと日本語で駄目な所を指摘してくれますよ。 使ってみてはいかがでしょう。 ちなみに、xhtmlなのかhtmlなのか分かんないので答えようがないんですけど、多分imgやmetaタグは/で閉めてないからじゃないですかね?

kinako4gou
質問者

お礼

早速のお返事ありがとうございます。送られてから早速実行してみました。日本語で適格な支持がされていて 面白いように警告が減っていきました。 xhtmlとhtml とがごちゃごちゃになっていて、実際xhtmlでやるときめたら それに統一しないといけなかったのですね。 この辺はとってもシビアできっちりしていますね。 でも、このページはとっても参考になり、実はかなり凹んでいたので、やる気が出ました。これからも勉強していきます。ありがとうございました。 修正に夢中になり お返事遅れました。すみません。

すると、全ての回答が全文表示されます。

関連するQ&A