Misunderstanding markup

先週、W3CはXHTML 2 Working Groupが年内でその活動を終了すると発表したんだ。単刀直入で、歓迎されるべきことだったんだけど、「XHTMLが終わってしまう」と多くの人を混乱させてしまった。Zeldmanのblogポストに寄せられたコメントを読むと、それが分かると思う。

仕方のない部分もある。異なる技術に、同じような名前がついていたことが原因なんだから。しかも、これは今に始まったことじゃあない。

たとえば、JavaScript。Javaになにか関係しそうだけど、そうじゃないよね。書き方がすこし似ているということを除けば、共通点はない。だから、ハムがハムスターと関係のかって聞くようなものなんだ。

ほかにも、DHTMLなんてのもある。HTMLに何かをするように聞こえるけど、これもそうじゃない。DHTMLはHTML要素のCSSプロパティをJavaScriptで制御するっていうやり方を、ひと言で表したものに過ぎないんだ。ぼくならこの「HTML, CSS, JavaScriptを組み合わせる方法」を「Web開発」って呼ぶかな。

XHTML 2もこれと同じ。XHTML 1.0やXHTML 1.1と関係あるように思うのは仕方ないけど、やっぱり違うものなんだ。

XHTML 1.0は、HTML 4を単純にXML構文のもとで定義しなおしたもの。だから、書き方にXMLの制約が加わる。こんな感じ。

タグと属性は小文字で書く

属性値を引用符で囲む

p や li にも、きちんと終了タグを書く

や にも、きちんと終了タグを書く img や br , meta などの空要素では、最後にスラッシュを書く

XHTML 1.1も同じように再定義された。でもこっちには、XML MIME型で文書を提供しなければならないといった、非現実的なきまりがあったんだ。

XHTML 2だけど、実はHTML 4と共通点がほとんどない。XHTML 2は思想的に「純潔」な語彙を一から作ろうと計画していたもので、後方互換性についてはほとんど考えられていなかったんだ。失敗する運命にあったわけさ。

This was a philosophically pure specification that was so backwardly incompatible that it nearly deprecated the img element.

（訳：XHTML 2は哲学的に純粋な仕様だったけれど、後方互換性について何ら考えられていなかった。たとえば、 img を非推奨に近い扱いにしていたりね。）

さて、XHTML 2が亡くなった今、これがXHTMLの終わりだと思ってる人がいる。でもそうじゃないんだ。

この混乱を何とかしようと、 は An Unofficial Q and A about the Discontinuation of the XHTML2 WG ってものを書いたんだけれど、あまり分かりやすいものではなかった。あと、John Allsoppが your snark is showing って言ったように、Henriの発言には当てこすりがある。

There are two meanings to XHTML: technical and marketing. The technical kind (XHTML served using the application/xhtml+xml MIME type) is a formulation of HTML as an XML vocabulary. The marketing kind (XHTML served using the text/html MIME type) is processed just like HTML by browsers but the authors attempt to observe slightly different syntax rules in order to make it seem that they are doing something newer and shinier compared to HTML.

（訳：XHTMLっていう言葉にはふたつの意味があるんだ。技術的な側面と、マーケティング的な側面でね。技術的なほうのXHTMLは、HTMLをXML語彙として構成したもので、 application/xhtml+xml MIME型で配信されている。一方のマーケティング的なXHTMLは、 text/html で配信されるもので、ブラウザー内部ではHTMLと全く同じように処理される。でも製作者は、そんなXHTMLをHTMLと違う風に見ているんだ。「XHTMLで書くのは新しいし、きらきら輝いてることだ」っていう風にね。）

フォーマットの技術的な違いを説明することと、厳しい構文が好きな製作者をけなすことは全く関係ないことだよね。

もちろん、XML構文を使うことに利点はいっぱいある。たとえば、このDrewのコメントを見てみよう。

Whenever this argument surfaces, there seems to be the assumption that loose syntax is easier for beginners. This baffles me. In my experience simple, strict rules are much easier to learn and code to than loose rules with multiple shortcuts. I like XHTML because attributes must always be quoted. Tags must always be closed. These are simple rules that require no thought, and result in uniform, predictable markup.

（訳：いつもこの手の議論で、ゆるい書き方は初心者にいいっていう人が出てくるけど、賛同できないなあ。ぼくの経験から言うと、単純で厳しいルールの方がゆるくていろんな書き方ができるものよりもずっと簡単に学べるし、書くのも楽だ。ぼくがXHTMLが好きなのは、属性値は引用符で囲む、タグはいつも閉じるっていうシンプルなルールがあるからなんだ。このルールに従っていれば他に何も考える必要はないし、一貫性のある読みやすいマークアップになるんだよ。）

別に「XHTMLの方がいい」とか「HTMLに比べてひどい」ってことじゃないよ。ぼくが言いたいのは、これは好みの問題だってこと。誰かと好みが違ったとしても、どちらかが間違っているなんてわけじゃない。ぼくがタイ料理好きで、君はイタリアン好き。でも一体、ぼくらは何を間違ってるんだい？

XHTML 2が終わったからといって、XHTML構文がなくなるわけじゃないんだよ。タグをちゃんと閉じることや、属性値を引用符で囲むこと。それはこれからもできるんだ。XHTML 1を使い続けることも勿論できるし、HTML 5でもちゃんと使えるんだよ。

そう。HTML 5は君にとって一番都合のよいスタイルで書くことができるんだ。Bruce先生はこんな事をおっしゃっているよ。

I like the XHTML syntax. It’s how I learned. I’m used to lowercase code, quoted attributes and trailing slashes on elements like br and img . They make me feel nice and comfy, like a cup of Ovaltine and The Evil Dead on the telly. But you might not. You might want SHOUTY UPPERCASE tags, no trailing slashes and attribute minimisation. And, in HTML 5 you can choose. Thanks to the “pave the cowpaths” principle, it’s up to you. As you like it. What you will. Whatever you want, whatever you like.

（訳：ぼくはXHTML構文が好きだ。なぜなら、そうやって学んだから。小文字で書くこと、引用符で括ること、brやimgにスラッシュを書くことに慣れているんだ。この書き方は、とても気持ちがいい。オバルチンを飲みながら、テレビでEvil Deadを見るような感じさ。でも、君はそうじゃないかもしれない。まるで叫んでるように見える大文字のタグや、スラッシュなしのimg, br要素、属性の省略表記が好きかもしれない。HTML 5だと、これらはぼくらの好きなように書けるんだ。“pave the cowpaths”っていう原則のおかげで、書く人のおまかせになるんだ。「お気に召すまま、お好きなように、好きなだけ、どうにでも」ってね。）

あと、 application/xhtml+xml で公開することもできるんだ。このMIMEにすれば、HTML 5が自動的に「XHTML 5」になる仕組みさ。うん、またややこしい名前が出てきたね……

覚えておいて。XHTML 2という仕様は、XHTMLという構文とは無関係なことと、XHTMLはHTML5でも使えることを。

でも、でも、でも ってきみが言ってるのが聞こえるよ。 何にもいいことないよ！HTML 5はまだサポートされてないじゃないか！ ってね。

でも サポート ってどういう意味だい？ちゃんと定義しようよ。XHTML 2と違って、HTML 5には後方互換性があるんだ。じゃあ、XHTML 1文書を簡単にHTML 5に変換する方法を教えようか。

このDOCTYPEを

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

こう変えるんだ。

<!DOCTYPE html>

はい、おわり。

XHTML 2はなくなるけど、XHTMLはこれからも生き続けるんだ。HTML 5の中でね。