行動記録

iwaimの行動記録など

HTML5でのタグの省略は結構考えられている件

HTML5は執筆時点でまだ勧告されていないので、まだまだ変わる可能性はあるんだけど書いておく。昨日(いつ)「ブログも更新しないし」とか言われたので。なお、本エントリで参照しているものはHTML5 A vocabulary and associated APIs for HTML and XHTML W3C Working Draft 25 August 2009です。一応Editor’s Draft 13 January 2010がでてて、それも確認したけど、該当部分に大きな変更はなかったし。

で、本題。SGMLアプリケーションであるHTML4は、SGML宣言で「OMITTAG YES」とされていたことから、タグの省略が可能となっている。例えばhead要素の終了タグとbody要素の開始タグを省略した次のようなHTML文書は仕様に適合している。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN"
        "http://www.w3.org/TR/REC-html40/strict.dtd">
<html>
<head>
<title>自明でないと省略できません</title>

<script type="text/javascript">
<!--謎のスクリプト-->
</script>

<p>本文なのですが。</p>
</body>
</html>

で、これがどのような理由で仕様に適合しているのかは結構ややこしい。理由はsatoshiiさんによるRe: SGML の省略タグ機構に詳しい。

ここでHTML5に話を移す。HTML5では、SGMLアプリケーションだったHTML4とは異なり、SGMLアプリケーションではないという道を選んだ。このことにより、HTML5では仕様自体にタグの省略についての取り決めも盛り込むことになった。W3C Working Draft 25 August 2009では9.1.2.4 Optional tagsの箇所である。

HTML5の仕様では、HTML4よりもタグの省略に関しては結構限定されてしまっているとも言えるが、省略可能な状況をすべて列挙しているため、とても解しやすくなっている。

最近、一部で話題となっているhttp://html5.us/のHTML文書は、執筆時点では次のようになっている。

<!DOCTYPE html>
<title>html5.us</title>
<style>pre{font-family:courier,monospace;font-size:48px;margin:5% auto;text-align:center;width:50%;}</style>
<pre><code>&lt;!doctype html&gt;</code></pre>

これは、先に例示したHTML4のコードと結構似ている構造だが、これが仕様に適合しているというのは、仕様を軽く読むだけで容易に理解可能となっている。

このような仕様になった議論は全然調べてないけど、列挙してしまうというのはかなり思い切った方針だと思うし、列挙しているそれぞれの条件についても読んでみると結構考えられているように思う。すごいなあ。

iwaim

フリーランスのウェブ屋/プログラマー。Vine Linux開発者。

ウェブサイト - Twitter - Facebook - その他の投稿

HTML5ではbody要素がセクションを作る

HTML5ではbody要素もセクションを作ります。というのをうっかり忘れてて、次のように書いてしまってた。

<body>
<article>
<header>
<hgroup>
<h1><a href="http://iwaim.beering.be/blog/">行動記録</a></h1>
<h2>再開</h2>
</hgroup>

これだと当然無名なセクションが作られてしまう。例えばHTML 5 Outlinerを使うと次のように表示される。

<ol><li><i>Untitled Section</i><ol><li>行動記録</li></ol></li></ol> 

無名セクションを作ってしまわないためには、このようにマークアップしないとまずい。

<body>
<header>
<h1><a href="http://iwaim.beering.be/blog/">行動記録</a></h1>
</header>
<article>
<header>
<h2>再開</h2> 

慣れるまで忘れがちなので、戒めのために記録しておく。

Related Posts Plugin for WordPress, Blogger...

iwaim

フリーランスのウェブ屋/プログラマー。Vine Linux開発者。

ウェブサイト - Twitter - Facebook - その他の投稿

Get Adobe Flash playerPlugin by wpburn.com wordpress themes