水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 最新のHTMLって何?

最新のHTMLって何?

2007年5月13日(日曜日)

最新のHTMLって何?

更新: 2007年5月16日

全問正解できる? HTML文法基礎クイズ (allabout.co.jp)」というものがあるようですが、難易度がとても高いですね。全問正解できる人いるんでしょうか?

私が悩んだ難問だけメモ。

Q1

Q1. 非推奨要素

以下の4つの記述のうち、文法的に最新のHTMLでは使わないことが推奨されているものがあります。それはどれでしょうか?

1. <strong> ~ </strong>

2. <b> ~ </b>

3. <table> ~ </table>

4. <h1> ~ </h1>

以上、全問正解できる? HTML文法基礎クイズ より

初っぱなから超難問で、私には答えが全く分からないのですが……。ちなみに、b要素は使わない方が良いと個人的には思いますが、HTML4.01 では deprecated になっていませんし、XHTML1.1 でも Presentation モジュールの中に含まれています。「文法的に使わないことが推奨されている」となると誤りです。

普通に考えると正解がないのですが、そもそも「最新のHTML」という言葉の定義が問題なのかもしれません。普通に考えると HTML4.01 か XHTML1.1 なのではないかと思いますが、この著者はさらに先を行っている可能性もあります。

調べてみると、XHTML2 の現在の WD では b要素が存在しません。HTML5 ではすべての要素が存在するようですが、bについては「ほかに使える要素がないときだけ使う」という旨の記述もあり、あんまり勧められていない雰囲気です。

※2007-05-16追記: XHTML2 には h1要素もないと思っていましたが、ありましたね。山岸さん、ご指摘ありがとうございます。

というわけで、XHTML2 や HTML5 を想定すると 2. が答えになる可能性はありますが、いくら何でも新しすぎますし、「仕様的に使わないことが推奨されている」とは言えないような気がするのですよね。

Q2

HTMLソース内で、最初に記述すべきことは以下のうちのどれでしょうか?(※何も省略せずに記述する場合を考えて下さい。)

1. DOCTYPE宣言

2. XML宣言

3. <html>タグ

4. <head>タグ

以上、全問正解できる? HTML文法基礎クイズ より

これも難問。「記述しなければならない」であれば答えは明白なのですが、この問題では「記述するべき」となっているので注意が必要です。そもそも、ここで言う「HTMLソース」が XHTML なのかどうかも問題から読み取れません。さらに「何も省略せずに記述する場合を考えて下さい」とあるのも問題をややこしくしています。

XHTML を想定するなら、文書型宣言の前に XML 宣言を記述することが強く推奨されています。XHTML1.0 と XHTML1.1 には、それぞれ以下のような記述があります。

An XML declaration is not required in all XML documents; however XHTML document authors are strongly encouraged to use XML declarations in all their documents.

以上、XHTML1.0(Second Edition) 3.1.1. Strictly Conforming Documents より

XHTML document authors are strongly encouraged to use XML declarations in all their documents.

以上、XHTML1.1 2.1.1. Strictly Conforming Documents より

XML宣言は省略可能ですが、「何も省略せずに記述する場合を考えて下さい」ということですので、XHTML を想定するならこれでファイナルアンサーでしょう。

問題は XML でない HTML を想定したときです。SGML では、文書型宣言の前には注釈宣言と処理命令、そして空白類文字が書ける (けれども省略できる) ことになっています。XML 宣言は処理命令ですから、文書型宣言の前に書くことができる (けれども省略できる) ことになります。「何も省略せずに」という言葉は、SGML な HTML であっても 「XML宣言」を答えとするようにと示唆しているようにも思えます。

ただ、「記述すべきことは……」というのが微妙なのですよね。XHTML でない HTML に XML 宣言を「記述すべき」とは思えませんし。

Q4

以下の4つのHTMLソースの中には、1つだけ文法的に誤っている記述があります。それはどれでしょうか?

1. <h1>クイズ<span class="en">QUIZ</span></h1>

2. <a href="/">HOMEへ<strong>戻る</strong></a>

3. <p><img src="sea.jpg" alt="海の写真"></p>

4. <a href="./album/"><h2>アルバムコーナー</h2></a>

以上、全問正解できる? HTML文法基礎クイズ より

まあ普通の問題、と思いきや、実は HTML2.0 だと

<!ENTITY % A.content "(%heading|%text)*">

<!ELEMENT A - - %A.content -(A)>

だったりしたので a要素の中に見出しを入れることができました。

もちろんそれは過去の話ですので、ここで迷うことはないと思いますが、Q1 と Q2 が難問だっただけに何かあるのではないかと勘ぐってしまいます。

Q7

Q7. 推奨されない理由は?

ある範囲の文字列を斜体で表示したい場合を考えて下さい。HTMLでは <i>~</i> で囲んだ領域は斜体で表示されると決まっています。しかし、<i>~</i>を使うことは最新のHTMLでは推奨されていません。(XHTMLでは使えません。)

それはなぜでしょうか?

以上、全問正解できる? HTML文法基礎クイズ より

うーん、i要素は HTML4 では deprecated になっていませんし、XHTML1.0 Strict にも存在しますし、XHTML1.1 の Presentation モジュールにも存在しますので、私の常識で考えると問題自体が狂っているとしか思えません。

「最新のHTML」という言葉が HTML5 の WD を、「XHTML」という言葉が XHTML2 の WD を指しているのだとするとつじつまは合うかもしれませんが、いくらなんでもちょっと新しすぎると思います。どちらもワーキングドラフトですし……。

関連する話題: HTML

最近の日記

関わった本など