XML宣言の省略がどうのこうの
- Category: Web関係
XHTMLの「要素」についての話なのにXML宣言とDOCTYPE宣言が出てくるのはおかしい。要素じゃないから。そもそも、DOCTYPE宣言は使って良いとか悪いとかそういうレベルじゃなくて、宣言のない文書はXHTML文書じゃないからなぁ。
さらに。XML宣言が省略できるのは文書の文字コードがUTF-8のときだけではありません。省略条件をまとめると、
- 文書の文字コードがUTF-8またはUTF-16であるとき
- 文書の文字コードにかかわらず、HTTPヘッダのContent-Typeリクエストヘッダでcharsetに文字エンコーディングが指定されているとき
当該文書がいずれかの条件を満たしていればXML宣言を省略できます。省略するとAHLのチェックで(AHLの設定次第では)減点されるかもしれませんが、省略条件さえ満たしていれば何の問題もありません。そもそも「書くことが強く推奨されている」だけであって、書かなくてもValidな文書になりえます。
(で、間違ってないよね?)
あとは、まぁ、いいや。
追記
まー、実際にはXML宣言は省略することが多いよね(私が仕事でXHTML書くときは99%くらいの割合で省略してます)。IE6のレンダリングモードとかの関係で面倒ですし。まぁ、そのときも二つ目の条件を満たしておくようにした方が良いでしょう。
追記2
散々いろんなとこで同じことが書かれているのは百も承知で、あえて書きました。なんていうか、私用メモ?
あー、ガイドラインの話だってのも承知しています。元記事のアレでの省略基準がUTF-8のときのみにするって話なんですよね。ただ、どうなんだろと。ガイドラインの運用的に問答無用で省略してHTTPヘッダで文字コード付加するほうが楽じゃね?とか思ったんですよ。もちろん推奨されているからには書いた方がいいんですけど。
追記3
「宣言のない文書はXHTML文書じゃない」XHTMLの仕様的にってこと?
仕様的にってことです。DOCTYPE宣言ってXHTMLの仕様的に必須ですよね。DOCTYPE宣言がなかった場合、well-formedなXML文書であるかもしれませんけど、ValidなXHTML文書にはなりえないと思うんですが、私の認識って間違ってるんでしょうか。
文書を保存して別の場所で利用することを考えると、encodingを明示する(か、デフォルトのUTF-8等を使う)方がよさそう。
言われてみればたしかにそうですね。文書を保存してどうこうすることを考えると、文字コードが文書内に明示されていないのは困りますよね。まだまだ考え的に浅いなぁ>私