Hatena::Groupweb

vantguarde

 | 

5.22

XML宣言とDOCTYPE宣言

22:22

XML宣言を書くことは「強く推奨」されてはいるんですが、ちょっと状況が変わろうとしてます。この前も書いた、XHTML Media Types (Second Edition)には、こんなことが書かれてたりします。

Processing Instructions and the XML Declaration

DO NOT include XML processing instructions NOR the XML declaration.

Rationale: Some legacy user agents render XML processing instructions. Also, some user agents interpret the XML declaration to mean that the document is unrecognized XML rather than HTML. uch user agents may not render the document as expected. For compatibility with these types of legacy browsers, you may want to avoid using processing instructions and XML declarations. Remember, however, that when the XML declaration is not included in a document, AND the character encoding is not specified by a higher level protocol such as HTTP, the document can only use the default character encodings UTF-8 or UTF-16.

XHTML Media Types - Second Edition (Editor's Draft 23 April 2008)

XHTMLでtext/htmlを許可する為の互換性ガイドラインで、UTF-8/16かHTTPで設定しておけとは言ってるものの「XML宣言とかPIとか書かないように」と言ってるのが興味深いかなと。まあIE6が1st edition公開時から変わらず存在し続けていたり、あと最近のApacheなんかは広く使われてるエンコードを設定してたりするんで、そういった実情をふまえてこう言ってるのかなと。

「宣言のない文書はXHTML文書じゃない」XHTMLの仕様的にってこと?

はてなブックマーク - Les cafés blancs / 2008年05月20日

仕様的にってことです。DOCTYPE宣言ってXHTMLの仕様的に必須ですよね。DOCTYPE宣言がなかった場合、well-formedなXML文書であるかもしれませんけど、ValidなXHTML文書にはなりえないと思うんですが、私の認識って間違ってるんでしょうか。

XML宣言の省略がどうのこうの - 追記3

仕様仕様と言うものの、XHTMLは別に1, 1.1, 2, Basicだけではないですよね。M12nから構成されるHost LanguageとIntegration Setも広義のXHTMLになりますし、その場合DOCTYPEは必須じゃない可能性があるでしょう、っていういじわるを書きたかっただけです。

えーと、じゃなくて。現時点ではMUSTではあるんですが、XHTML 1.1 SEとXHTML 2.0のEditor's DraftではSHOULDになっています。なぜかというと、このふたつにはXML Schemaが提供されるからです。

DOCTYPEは本質的にDTDのために存在してるものなので、Schemaが提供されXML的な検証を行うようになれば、特に必要なくなります(entityは使えなくなりますが)。なので「DOCTYPE宣言がないとValidにはならない」というのは現実的には間違ってないですが、まあでも少し違うかなと。

 | 
Contact: @vant / lepetitcroissant@gmail.com.