空要素タグの文法

北村と申します。はじめまして。

最近になって、HTML5の空要素の詳細な文法規則を確認しようと思い、
9.1.2.1 Start tags
http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#start-tags
を読んだのですが、気付いたことがあったので報告してみます。

箇条書きのところをざっと訳してみると、

  1. 開始タグの先頭文字は U+003C LESS-THAN SIGN (<) でなければ
     なりません。
  2. 開始タグの次の数文字が要素のタグ名でなければなりません。
  3. 次の段階に何か属性があれば、最初に、1つ以上の空白文字が
     なければなりません。
  4. そして、開始タグには、幾つかの属性があるかもしれません
     (その文法は以下で説明されます)。属性は1つ以上の空白文字に
     よって互いに分けられるかもしれません。
  5. 属性の後に、1つ以上の空白文字があるかもしれません。(いくつかの
     属性は、空白が後に続くことを必要とします。以下の「属性」の
     項を見てください)
  6. そして、要素が空要素の1つであるか、または要素が外部要素で
     あれば、一つの U+002F SOLIDUS (/) があるかもしれません。
     この文字は空要素においては何の効果もありませんが、外部要素に
     おいては、この文字は開始タグが自身を終了するものであることを
     示します。
  7. 最後に、U+003E GREATER-THAN SIGN (>) により開始タグを
     閉じなければなりません。

となりました。この文に沿って考えると、例えば属性なしのbr要素について、
<br> や <br/> はどちらもOK、ということは言えますが、
<br > や <br /> のような、要素名の後に任意の空白が入る書き方を
認めていないように見えます。
(要素名からタグ閉じまでの空白は3番、5番で説明されていますが、
 どちらも属性が存在する場合に限定された記述となっています)

しかし仕様の意図としては、HTML4, XHTML1双方からの移行を容易に
するという意図で / があってもなくてもよいようにしていると
思うので、であれば、XHTML1で多く使われている <br /> のような
書き方でも可となるよう、仕様の文章を修正すべきではと考えます。

参照: WHATWG FAQ - 日本語訳 - HTML5.JP
http://www.html5.jp/trans/whatwg_html5faq.html#Should_I_close_empty_elements_with_.2F.3E_or_.3E.3F


※以上の話は以下の記事でも言及しました。
http://www.akatsukinishisu.net/itazuragaki/html/html5_void_elements_syntax.html


-- 
北村曉 kits@akatsukinishisu.net
http://www.akatsukinishisu.net/

Received on Monday, 30 November 2009 13:30:11 UTC