text/htmlとしてのみ送信されるXHTMLは、ただの不正なHTML

XHTMLの利点について色々考えてみて気づいたのだが、利点に関していえばtext/htmlとしてのみ送信されるXHTML文書はただの不正なHTMLだ。

text/htmlで受信したXHTML1.0文書というのは、HTMLとしては不正な記述 (名前空間の記述や、xml:lang属性など) を含んだエラー処理必須のHTML文書であり、XMLとしては処理するにはまずXMLかどうか検証せねばならない文書だ (text/htmlで受信したのだから当然そうなる)。つまり、受信した側としてはHTMLとして処理するにも、XMLとして処理するにも余計な仕事を色々せねばならない困った文書といえる。

特にtext/htmlとして受信したXHTMLらしき文書をXMLとして扱うことに関して、今まで木俣は能天気に単にXMLとして再解釈して処理すればよいと考えていたが、当然ながらそんなことはできない。例えば、元はXHTML1.0として書かれた文書も、受信するまでの間にサーバが<img scr="広告.png" alt="(スポンサーからの広告)" >というようなtag (終了タグがないのでXML文書としては不正になる) を挿入しているかもしれない (text/htmlとして送信する文書への処理なので、このサーバの処理 (img要素を強制空要素として終了タグを記述せず挿入する) は正しい)。そんなわけでtext/htmlとして受信したXHTMLらしき文書は、あくまでXHTMLらしき文書であり、妥当性の検証は必須であり、下手すると (しなくても) HTMLとしてエラー処理してから、HTMLとしてXHTML1.0に変換したほうが良いかもしれない (application/xhtml+xmlとして受信した場合も妥当性の検証は必須だが、それより一線を画して信用性が低い、という意味で)

では、送信側にとってどうかというと、1つのファイルを変換処理なしにXMLとしてもHTMLとしても送信できる (HTML処理機側にHTML文書への変換処理=エラー処理をしてもらう)、つまり、手抜きができるという利点があるが、逆に言えばtext/htmlとしてしか送信しないなら意味がない。

結果としてtext/htmlとしてのみ送信されるXHTMLは、誰にとっても嬉しくないエラー処理必須のHTMLでしかない。