(X)HTML の仕様に関する疑問

何度も書いているように、このブログの記事は、HTML を直接ガシガシ書いています。

そうやって、日常的に HTML を書いていると、だんだんと

「HTML が 第 2 の母国語」

みたいな、錯覚を覚え始めたり。──同じような事を、Web デザイナやプログラマも思うのだろうな、と想像します。

で、そこまで慣れ親しんでくると、ちょっとした細かい点が気になってきます。(X)HTML の仕様の中で、「何で こうなっているの?」と。

──と言っても、そんなに深い話ではなくて……。

日本語で言うところの、「はははははじょうぶだ」や「にわにはにわにわとりがいます」、「ぼくははてなならなんでもすきだ」などの、重複に感じるイライラさ、みたいな感じ。

今回は、XHTML1.0 Strict に話を限定して、「何で こう書くの?」とか「コレは何故ダメなの?」と言った話題を書いてみます。

例によって、仕様書も ろくに見ずに、テキトーに書いているので、間違っていたら済みません!(指摘よろ)

script と img

「それを言うのはお前で100万人目だ!」(by. 絶望先生: 『100万回言われた猫』)──なネタですが……。

こっちは正しいのに:

<img src="hoge.jpg" alt="alt の内容" />
<script type="text/javascript" src="fuga.js"></script>

これはダメ:

<img src="hoge.jpg">alt の内容</img>
<script type="text/javascript" src="fuga.js" />

──というのがイライラ。

まぁ、「空要素タグ」か どうか、ということを把握しておけば間違いはないのですが、なんとなく直感に反する感じ。

dl dt dd

こっちは、自分の認識があっているか、自信がないですが……。

たとえば、こういった定義リストが あったとして:

<dl>
  <dt>定義 1 のタイトル</dt>
  <dd>定義 1 の中身</dd>
  <dt>定義 2 のタイトル</dt>
  <dd>定義 2 の中身</dd>
</dl>

「タイトル」と「中身」は一対一で対応している、と思いますよね。つまり、こんな感じだと:

[dl]
  |
  +--[dt]--[dd]
  +--[dt]--[dd]

──しかし、実際は上のようなツリー構造には なっていません。こうですね:

[dl]
  |
  +--[dt]
  +--[dd]
  +--[dt]
  +--[dd]

要するに、dtdd は「dl 要素の直下にある」というだけの関係です。

なので、こう書いても問題ありません:

<dl>
  <dt>定義 1 のタイトル</dt>
  <dt>定義 2 のタイトル</dt>
  <dd>定義 1 の中身</dd>
  <dd>定義 2 の中身</dd>
</dl>

そのあたりが気持ち悪い自分は、こうやって定義したりします:

<div class="define">
  <dl>
    <dt>定義 1 のタイトル</dt>
    <dd>定義 1 の中身</dd>
  </dl>
  <dl>
    <dt>定義 2 のタイトル</dt>
    <dd>定義 2 の中身</dd>
  </dl>
</div>

または、ulli で書いています:

<ul class="define">
  <li>定義 1 のタイトル
    <ul>
      <li>定義 1 の中身</li>
    </ul>
  </li>
  <li>定義 2 のタイトル
    <ul>
      <li>定義 2 の中身</li>
    </ul>
  </li>
</ul>

うーん、このあたり、ベストプラクティスは あるのでしょうか……。

MT タグ

これも「100 万回」シリーズですが……。こんなコードもイライラ:

<a href="<$MTEntryPermalink$ encode_url="1">">
  <$MTEntryTitle encode_html="1"$>
</a>

──え、どこが? と言う人も多いと思いますが……。

<>"" が、ネストネストしているのが気分悪い。

そもそも、MT タグなんて独自タグなんだから、(X)HTML を真似る必要は無かったと思いますね。

たとえば、こんな書き方もサポートしたらいいのに(それ Plu):

<a href="{MT:EntryPermalink encode_url="1"}">
  {$MT:EntryTitle encode_html="1"$}
</a>

まとめ

──え、もう終わり? という感じですが、書いている内に長くなったので、これくらいに します。

全然、情報を追いかけていないですが、HTML5 や XHTML2.0 では、どうなるんでしょうね? もっと、正しい (X)HTML を誰でも書けるようになると、良いですね。

[2] このページの一番上へ戻る