• ベストアンサー

空のタグの閉じをbrと同じ記述で書けるか否か

htmlの記述についての質問です。 <div class="objects"></div> 上記のような要素を <div class="objects" /> といった表現を出来るか知りたいです。 xhtml、html4、5のそれぞれのバージョンで許可されているか知りたいです。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

いえ、空要素は内容を持ち得ない要素ですから、空要素でないものには閉じタグが必要です。 そもそも <div class="objects"></div> 自体があってはならないのです。  HTMLは、それを構成する要素(Element)に分解し、それぞれの構成要素をタグ(tag)でマークアップするものですから、その内容がないというのは矛盾します。ただ、HTMLでは、 AREA,BASE,(BASEFONT,)BR,COL,FRAME,HR,IMG,INPUT,(ISINDEX,)LINK,META,PARAMは、空要素ですから終了タグが存在しません。  XML(XHTML)の場合は、 <mytag></mytag> <mytag/> <mytag />  は同列ですから、記述可能です。  これらはXHTMLで定められている要素ではなく、独自に拡張した(extended)要素ですから。HTMLとは別の名前空間に所属します。  

webwebwebweb
質問者

お礼

>HTMLは、それを構成する要素(Element)に分解し、それぞれの構成要素をタグ(tag)でマークアップするものですから、その内容がないというのは矛盾します。 なるほど空要素として用意されていないタグは 何らかの要素を格納していなければならないのですね。 デザイン的なものを表現するためにだけ用意された 要素にdivを使っていて、たびたび以下のような状態になっていました。 <p>ABCD EFGH IJKL MNOPQ RSTUV WXYZ</p> <p>ABCD EFGH IJKL MNOPQ RSTUV WXYZ</p> <div class="objects"></div> 上記を踏まえるとhr要素などを 使うのがベストなのでしょうかね。

その他の回答 (3)

回答No.4

HTML 4.x) HTML 4のSGML宣言でSHORT TAG YESであるため,省略タグ機構は使えますが,NET tagであっても, <div class="objects" //としかならないため,/>は書けません。 「HTML 4標準およびSGML標準のみに沿うならば」<div class="objects" /テスト/とかが許されますが,これを理解できるブラウザはまずないでしょう。 HTML 4.01の仕様書B.3.7にも,「unlikely to work with many existing HTML tools.」と書かれているものです。 http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.7 XHTML 1.x) XMLの文法に従うため,有効です。 http://www.w3.org/TR/xml/#NT-EmptyElemTag ただし,XMLの仕様書には内容がEMPTYと定義されているときのみ使うことが推奨されています。 また,XHTML 1.0においても,HTML 4との互換性における要請として,EMPTYの時のみの利用が推奨されています (C.3はinformative)。 http://www.w3.org/TR/xhtml1/#C_3 HTML5 HTML記法) 空要素およびforeign elementに関しては,/>の閉じを許しますが,divには許されていません。 http://www.w3.org/TR/html5/syntax.html#elements-0 HTML5 XHTML記法) 仕様では定義されず,XMLに丸投げされています。 http://www.w3.org/TR/html5/the-xhtml-syntax.html#writing-xhtml-documents このため,先の,EMPTYなものだけ/>を使う,ということが推奨されます。

webwebwebweb
質問者

お礼

やはり空要素として定義されている要素しか /> この表現は使えないのですね。 html5でタグの意味が変わったので ソースコードを何かいい表現が出来ないか考えていました。 ありがとうございます。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

空のタグではなく、空の要素ですね。 XMLにおいて、<element/>は、内容を持たない要素を示します。XHTMLはHTMLをXMLの文法に合わせて書き直したものですから、XHTMLはそう書かなければなりません。  HTML5では、空要素を/>と書くことが出来ますが、その場合はXML宣言が必要になります。  XHTML/HTMLを問わず、<要素/>は書くことが出来ません。   ブラウザは、それであっても描画はするでしょう。

webwebwebweb
質問者

お礼

すみません。 xml宣言があればhtml5で空要素を />で表現できるのでしょうかね? xml宣言有+html5ではOKだけどhtml4ではだめですよって意味なんですかね?

  • tkmojo
  • ベストアンサー率50% (105/207)
回答No.1

divはそのような書き方はどのバージョンでもできません。 そういった書き方は、xhtmlにおいて、終了タグのないタグを閉じるためのものです。 終了タグの無いタグと言うのは br、img、input、meta などの独立したタグです。 終了タグがあるものを省略する書き方ではないので、 divやpなどには使用できません。

webwebwebweb
質問者

お礼

ありがとうございます。 >どのバージョンでもできません。 根拠や勧告などありましたら教えてください。

関連するQ&A