XHTML1.1で空要素タグを書くとエラーが出る理由とは?

このQ&Aのポイント
  • XHTML1.1で空要素タグを書くとW3CのValidatorでエラーが出てしまいます。
  • エラーメッセージによると、<br />のような空要素タグは特定の要素の中に入れる必要があるようです。
  • また、XHTML1.1の仕様では空要素タグをブロック要素タグなどで囲む必要がある可能性もあります。
回答を見る
  • ベストアンサー

XHTML1.1で空要素タグを書くと、W3CのValidatorでエラ

XHTML1.1で空要素タグを書くと、W3CのValidatorでエラーが出てしまいます。 下記のXHTMLをW3CのValidatorでチェックをすると、body内の<br />の箇所でエラー出てしまいます。 =========================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title></title> </head> <body> <br /> </body> </html> =========================================================== エラーの内容は下記の通りです。 document type does not allow element "br" here; missing one of "ins", "del", "h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "pre", "address", "fieldset" start-tag <br /> The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element. One possible cause for this message is that you have attempted to put a block-level element (such as "<p>" or "<table>") inside an inline element (such as "<a>", "<span>", or "<font>"). =========================================================== <img>などの<br />以外の空要素タグを入れても同様のエラーが出ます。 ただし、<div><br /></div>とするとエラーが出ません。 XHTML1.1の仕様では、空要素タグはブロック要素タグなどで囲わないといけないのでしょうか? もしくは、記述になにか間違いがあるのでしょうか? ご教示をお願いいたします。

  • HTML
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
回答No.2

body直下にはブロック要素しか入れられません。br要素やimg要素 はインライン要素なので、空要素だとか関係なく、body直下に置く ことは出来ないのです。普通は段落の中で改行に置換する要素や画 像に置換する要素ですから、p要素の中にあるはずでしょう。a要素 やspan要素でも同じエラーが出ますよ。

go-ape
質問者

お礼

空要素関係なかったんですね・・・。 勉強になりました。ありがとうございます。

その他の回答 (1)

回答No.1

br はインライン要素ですから、body 直下には置けません。

go-ape
質問者

お礼

ありがとうございます。

関連するQ&A

  • XHTML1.0で空要素タグの「/」は省略可能か

    XHTML 1.0で、エンコードがUTF-8であるなど一定の条件を満たせばXML宣言の省略は可能と聞きましたが、 空要素タグの「/」についてはどうでしょうか。 あるサイトで、XHTML 1.0で書かれているはずのページで、空要素タグに「/」が入っていないので (つまり、<br>とか<img src="...">のようになっている) ちょっと気になりました。 ブラウザーでは一応ちゃんと表示されてはいるようですが。

    • ベストアンサー
    • HTML
  • 空要素タグ??

    ブログのSEO対策の為に以下のページに自分のページURLを入れ タグが上手く書けているかをチェックしました ​http://openlab.ring.gr.jp/k16/htmllint/htmllinte.html​ すると、その中の回答に 空要素タグ の要素には空白さえも含めることはできません。 という問題点を指摘されました これの意味は XMLの Content of Elements(J)では、空要素タグは、<tag></tag> のように開始タグと終了タグをくっつけて書かなければならないとされてます。つまり、空白も含めることはできません。 という事です そして対象となる部分は以下のタグのどこかにあるようなのですが まったく検討がつきません どこがエラーの対象なのでしょうか? ちなみにブログはMTですのでカスタマイズは問題ありません よろしくお願いします <h2 class="archive-header"><$MTBlogName encode_html="1"$>項目一覧</h2> <div class="entry" id="entry-999"> <MTCategories> <h3 class="entry-header"><a href="<$MTCategoryArchiveLink$>"> <$MTCategoryLabel cutfirstchar="4"$></a></h3> <$MTCategoryDescription$> <div class="entry-content"> <div class="entry-body"> <MTEntries lastn="999"> <a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>&nbsp;|&nbsp; </MTEntries> </div> <p class="entry-footer"></p> </div> </MTCategories> </div> <p><br /></p> <div class="gotop"><a href="#TOP">このページのトップへ&uarr;</a></div> </div> </div>

  • 空要素タグは/>で閉じてはいけないのですか?

    空要素タグは/>で閉じてはいけないのですか? <img src="URL" alt"説明" />をAnother HTML-lintでチェックをしてみたのですけど、 「XHTML以外では、空要素タグを /> で閉じることはできません。」と出てきました。 FC2ブログを使ってるんですけど、テンプレートのメタタグとかには全て/>が入っていました。 空要素の/>はやめた方がいいのでしょうか。

    • ベストアンサー
    • HTML
  • XXXXXX では空要素タグを `<TAG />`

    ソース内でonclick 属性を使っているので http://www2010.chin3.net/tech/html/009.html を参考に、 <meta http-equiv="content-script-type" content="text/javascript" /> を入れたのですが、 Another HTML Lintでソースをチェックしたときに 75. XXXXXX では空要素タグを `<TAG />` と書くことはできません。 *5* XHTML以外では、空要素タグを /> で閉じることはできません。 というエラー内容になりました。 <meta http-equiv="content-script-type" content="text/javascript" /> の何がダメなのでしょうか? そもそも「XXXXXX では」の「XXXXXX」の意味が不明だし、 「空要素タグ」とは、何を指してるのでしょうか?

    • ベストアンサー
    • HTML
  • createElementによる空要素の生成について

    こんにちは。 createElementで出来る要素の生成についての質問です。 createElementでbrやimgなどの空要素を生成したいのですが、できあがったもののソースを見ると、「<br>」や「<img>」など終了タグがついていないものが生成されてしまいました(Firefoxの「選択した部分のソースを表示」で確認)。 XHTML文書としてページ作成しているので、どうにも具合悪いです。 終了タグのついた空要素の生成方法など、対処法があれば教えていただけないでしょうか。

  • タグとタグの間が空、をなくしたい。

    テキストに直接HTMLを打ち込みながら制作しています。 HTMLのチェックをしたところ、「<DIV> と </DIV> の間が空」という注意が表示されたのですが、どのように空要素をなくすのがスマートなのでしょうか? 独学で制作していたため、色々間違っている部分が多くあるかと思いますが、ご指導のほどよろしくお願いします…! 現在下記のようなパターンで使用していました。 1 <h2>○○○○○○○</h2> 2 <p>○○○○○</p> 3 <p>○○○○○</p> 4 <div style="margin-top:50px;"></div> 5 <h2>○○○○○○○</h2> 6 <p>○○○○○</p> 7 <p>○○○○○</p> やりたかったこと= それぞれのh2の間に少し広めの空きを作りたかった。 divの空要素を書き込んだ理由= pにmarginを指定するとpとpの間にまで空きができてしまう h2にmarginを指定すると、一番最初のh2の上が空きすぎてしまう と言った理由からでした。 この場合、それぞれのh2の間に少し広めの空きを作るにはどうしたらいいのでしょうか?3行目のpにclassを指定すればいいのでしょうか…。 それともbr等で指定ができるのでしょうか? 空きをbrで記述した時も、あまり連続してbrを記入したらチェックで指摘されて困っています。 どうぞよろしくお願いします!

    • ベストアンサー
    • HTML
  • W3C標準

    W3Cの標準になっているかどうかMarkupValidation Serviceで調べたところ不可解な指摘があります。以下がそれなんですが Line 34, Column 8: end tag for "td" omitted, but OMITTAG NO was specified. </div> You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">". </div> の後ろの > に赤字になっています。</div />にしろということでしょうか? 実際のタグは</div>になっています。他にも似たいような指摘があり、閉じ方を指摘されています。ちゃんと閉じているのに、と思うのですが、どうなんでしょうか?

    • ベストアンサー
    • HTML
  • W3CのValidataが通らない。

    <input type ="text" size ="12" id="chg"> <input type ="button" value ="入力したらクリック" onClick ="changecolor('#' + document.getElementById('chg').value);"><br> という構文がW3Cのバリデータでエラーが発生します。 エラー内容は document type does not allow element "INPUT" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag. こういったものです。 表示自体はできるのですがなぜ通らないのかわからないです。 なぜこうなるのかよろしければ教えていただきたいです。

    • ベストアンサー
    • HTML
  • Dreamweaverでバリデートをかけてソースをチェックしたところ、

    Dreamweaverでバリデートをかけてソースをチェックしたところ、 タグ"html"には、現在アクティブなバージョンでは属性"xmlns:spry"がありません。 [XHTML 1.0 Transitional] タグ"div"には、現在アクティブなバージョンでは属性"spry:region"がありません。 [XHTML 1.0 Transitional] タグ"div"には、現在アクティブなバージョンでは属性"spry:repeat"がありません。 [XHTML 1.0 Transitional] というエラーがでてしまいました。 現在のDOCTYPE宣言は、 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> です。 html要素は、 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" xmlns:spry="http://ns.adobe.com/spry"> です。 DOCTYPEに問題があると思い、XHTML1.0のStrict DVDやFrameset DVDなどに変更してみましたが、エラーは[XHTML 1.0 Transitional]の部分がそれぞれのDTDに変わるだけで、エラーは減りませんでした。 ちなみにHTML 4.01に変更したらエラーがとても増えました。 ※一番上のエラーですが、 htm要素中のxmlns:spry="http://ns.adobe.com/spry"を削除したら、エラーがなくなりました。 残りは2つです。 助けてください。

    • ベストアンサー
    • HTML
  • XHTMLでは、インライン要素は必ずブロックレベル要素内に記述となっていますがこの場合は?

    XHTMLについて教えてください。 XHTMLでは、インラインレベル要素は、必ずブロックレベル要素内で記述されなければなりませんが、こういった場合(以下参照ください)の書き方は、どちらが正しのでしょうか? まずCSSを、 #hoge{ width:200px; background-color:#000000; } と設定したと仮定します。 で、XHTMLですが・・・ -----サンプル1----- <div id="hoge"> <p><img src="写真とか.gif" alt="" width="10" height="10" /></p> <h1>タイトル</h1> <p>テキストテキストテキスト・・・・・</p> </div> -----サンプル2----- <div id="hoge"> <img src="写真とか.gif" alt="" width="10" height="10" /> <h1>タイトル</h1> テキストテキスト </div> あと、ブロックid“hoge”内に一つだけインライン要素を配置する場合・・・ -----サンプル2----- <div id="hoge"> <p><img src="ボタン.gif" alt="" width="10" height="10" /></p> </div> -----サンプル2----- <div id="hoge"> <img src="ボタン.gif" alt="" width="10" height="10" /> </div> 要するに、CSSの設定を呼び出すために<div>で括っている場合は、それぞれのサンプル2のように既にブロックレベル要素内に収まっている」ということになるのでしょうか? それとも、やはり、サンプル1のよう記述するのが正しいのでしょうか? 説明が分かりにくくて申し訳ございませんが、ぜひアドバイスくださいますようお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう