初耳でございました。うーん。del は display:none;
とか指定される可能性も大いにあるわけで、そうすると text-decoration:underline;
な場合と文字配置が変わってしまうってことを考慮したんですかね。
まあ、それを言ったら em や strong だって font-size:2em;
とか指定されることもある気がするけど。というか、実際 pre の中に font-weight:bold;
な strong を記述したりすると、font-weight:normal;
な部分と文字幅が違っちゃってマズーなんてことは良くありますね。
Can we use 'application/xhtml+xml' for XHTML 2.0? (PR#674) であらかた語り尽くされてたりする。
Namespaces in XML では、xml:
という接頭辞は暗黙的に http://www.w3.org/XML/1998/namespace
という XML 1.0 の名前空間と関連付けられることが述べられている。
従って、Namespace Constraint: Prefix Declared という規則は xml:
という接頭辞に関しては適用されない。つまり、XML 1.0 + Namespace では xmlns:xml="http://www.w3.org/XML/1998/namespace"
という宣言は必要ないことになっている。
ところが、XHTML 1.0 Strict XSD なんかではこの宣言が記述されていたりするのである。で、確かに Namespace in XML では xmlns:xml
の明示的な宣言について禁止はしていないなあということに気付いたわけであるが、同時に次のような宣言は認められているのだろうかという疑問が浮かんだ。
xmlns:xml="http://otherNamespaceURI.org/"
xmlns:otherPrefix="http://www.w3.org/XML/1998/namespace"
前者は「'xml' という名前は予約されている」という理由から不可であると思われるが、後者は…不可とする明確な根拠はないように思う(ちなみに Mozilla 1.2.1 では機能した)。
そんなこんなで色々調べまわってみたのだが、この辺りは Namespaces in XML 1.1 で厳密に定義し直されるらしい。Namespace constraint: Reserved Prefixes and Namespace Names では、xmlns:xml
の宣言は必要ないが記述しても構わないこと、先に挙げた二つの宣言例はどちらも不可であることが明記されている。
なお、Namespace in XML では「どの名前空間とも関連付けられない」とされていた xmlns:
接頭辞は、暗黙的に http://www.w3.org/2000/xmlns/
という名前空間と関連付けられることに変更されるらしい (DOM なんかではその方が都合がいいとか何とか)。ちなみに、次のような宣言はいずれも不可とされている。
xmlns:xmlns="http://www.w3.org/2000/xmlns/"
xmlns:xmlns="http://otherNamespaceURI.org/"
xmlns:otherPrefix="http://www.w3.org/2000/xmlns/"
まあ、どの宣言も全く意味をなさないから、これは当然の処置と言えよう。
# 念のためというか、例えば xmlns:xmlns="http://otherNamespaceURI.org/"
という宣言が認められるとすると、xmlns:
という接頭辞は名前空間と接頭辞の関連付けには用いることができないわけで、そうするとそもそも xmlns:xmlns="http://otherNamespaceURI.org/"
という宣言自体が意味を持たないから、やっぱり xmlns:
は名前空間と接頭辞の関連付けに用いることができるということになって(以下略
で、以下は余談というか勘繰りだが、xml:
接頭辞の宣言を許容したのは、将来の版の XML では「XML の名前空間」が変更されうるということを示唆しているのかも知れないなーなどと思った。例えば XML 2.0 では xmlns:xml="http://www.w3.org/200x/xx/xml20"
になるとか。
とうの昔に Errata として修正されていた模様。なーんだ。
で、僕は「貴族」すなわち Valid であることを愛でる頭の固い人々の一人な訳ですが。
とか言いつつ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
で xmlns:xhtml2="http://www.w3.org/2002/06/xhtml2"
とか書いちゃってんのかよっ!
まぁ、このサイトにもわざわざ XHTML 1.0 の DOCTYPE 宣言をした挙げ句 standalone="yes"
とか書いてるリソースがあるので人のことは言えないのですが。(2003-11-10追記: 今はもうないよ。)
# どうでもいいけど、自由人
とか書かれると「フリーマン」とルビを振りたくなるな。
いや、つーか、xmlns:xhtml2="http://www.w3.org/2002/06/xhtml2"
と書いてる時点で XHTML 1.1 としては invalid なので。「貴族」なら、valid にするために <!ENTITY % XLINK.xmlns.attrib "xmlns:xhtml2 CDATA #FIXED 'http://www.w3.org/2002/06/xhtml2'" >
という宣言を加えるなり何なりすべきなのでは、と。
まぁ、「ボヘミアン」的な思考で言うならば、そんな面倒なことはせず、不要な DOCTYPE 宣言なんて取っ払ってしまえってことになるかと思いますが。個人的にはこちらの方がオススメ。
# 余談ですが、Mozilla が出してるパージングエラーってどんなのです? うちの環境 (Classic MacOS + Mozilla 1.2.1) では再現できなさげなんですが。