2013/02/23

[html]タグは大文字? 小文字?

インデントは、まあいいとしよう。
それよりも気になるのは、タグを大文字で書くのか小文字で書くのか、だ。

前回参考にさせていただいたサンプルは、1行目に「!DOCTYPE」とびっくりしながら(じゃないと思うが)大文字になっている。
それ以降は小文字だ。

しかし、HTML4.01の技術仕様書には、タグが大文字で書かれていた。

http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.1
(日本語訳をされた方のページ)

うーむ・・・・。


答はここに書かれていた。

(原文)http://www.w3.org/TR/html401/types.html#h-6.9
(日本語訳)http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/types.html#h-6.9

「case-insensitive」というわけで、大文字小文字は区別しない、ということだ。
ほほぅ。

速く処理したい、という観点からすると、区別するようにしておいた方がよいはず。
だって、たとえば「div」にしても、

  • div
  • Div
  • dIv
  • diV
  • DIv
  • DiV
  • dIV
  • DIV

と、2の3乗だけ組み合わせがある。
だから、まず大文字か小文字かのどっちかに変換する処理をしてからタグを識別するように作るだろう。
これが、大文字か小文字かだけに固定すると、変換処理が不要になる。

とはいえ、歴史的な観点もあろうし、そもそもテキストファイルという特性からすると、「タグの種類が異なるからエラー」とはできないのだろう。


じゃあ、URIはどうなんだろう?
昔から気になっていたのだ。

(原文)http://www.w3.org/TR/html401/types.html#h-6.4
(日本語訳)http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/types.html#h-6.4

微妙な表現だ。「general are case-sensitive」。
一般的には大文字小文字を区別する

 

これは多分、ファイルシステムが関係しているんじゃなかろうか。
FATや大文字小文字を区別しない(基本的に大文字管理で、拡張して小文字なども保存している)。
NTFSはよく知らないが、Windowsで使っている分には区別しなさそうだ。

ext2やext3は、区別する。
Androidのプラットフォームをビルドするとき、ファイルシステムが大文字/小文字を区別できるかどうかチェックしていて、Windowsでビルドできないのはそのせいだ(区別しないといかんからだろう)。

ともかく、仕様としては「安全のため、大文字小文字は区別するものと考えておくこと」となっているので、そう思っておこう。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。