XHTML Modularization 1.1 のバグ

某所で XHTML 1.1 では title に id を付けられない、という記述を見かけて、第2版で付けられるようになってなかったっけと思って確認したら仕様上は付けられることになってるのに DTD が直ってなかった。SuikaWiki 見たら meta も同様だった。

まあ多分当時も気付いた人はいたんだろうけど、今さら指摘する気にもならなかったんだろうな。

うらしま

サイト更新しなくなってかれこれ10年経つんだけれども、その間HTML関連の話はほとんど追わずに来た(canvasとかWebSocketとか部分的に触ったものもあるけど)ので、ちゃんと調べだしたらそれしらんかっとんてんちんとんしゃんみたいなのばっかだわ。

W3Cがとっくの昔にHTML5を勧告してたり、もうすぐHTML 5.1を勧告しそうだったり、WHATWGがそれを嫌がってたり(わかる)、WHATWG的にはHTML5はもはやHTML5という名前ではなかったり、まあいろいろ。最後のは紛らわしいというかぐぐる時に困るんだけどみんなどうしているのか。

あとまあ例によって例のごとくというか、巷の解説サイトの信頼度が何というかその、相変わらずな感じでそこだけは変わってないなと思いました。

最小のHTML

最小のHTML文書とは何か - Qiita を見て、いろいろ気になるところがあったんだけど、よく見たら書いたのが若葉氏で途端に自信がなくなった。

(XHTML 1.1 では) DOCTYPE 宣言は必須でしたが、不思議なことに公開識別子とシステム識別子は (明確には) 必須とされていませんでした。

うーん、まあ if present をどう解釈するかという感じかなあ。仕様策定者はさすがに必須のつもりで書いたんじゃないかと思うんだけど。

巷ではなぜかシステム識別子は省略できるとされることもありましたが、 HTML 4.01 が要求する DOCTYPE 宣言にはシステム識別子も含まれていました。

これも仕様書の文言をどこまでそのまま受け取るか、という感じかなあ。HTML 4.01 仕様書自身のソースでシステム識別子が略されているというのがあって、まあ仕様策定者的にはそこは省略してもいいつもりだったんじゃないかなーと思うんだけど。

ちなみに SGML 的には PUBLIC と引用符の間の空白は削れるし、公開識別子とシステム識別子の間の空白も削れるんだけど、これも use this document type declaration というのをどこまでそのまま受け取るかによるのかなあ。

あと、XHTML 1.1 ではbodyの内容が空でもいい (<!ENTITY % body.content "( %Block.mix; )*" >) っての初めて知った (忘れただけかも知れない)。HTML 4.01 では <!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body --> なので <p> か何かを書く必要がある。ここははっきり誤り。

まあ実は HTML 4.01 に関しては昔考えたことがあったんだよね。今見るとタイトルは意味不明だし解説もないしで不親切極まりない。もうちょい詳しい話はquaaさんが最小のHTML 4.01?に書いてる。