XML宣言は一行目にないとダメ?

<?xml version="1.0"?>
<root>
</root>

とか一行目を空行にして書いて、Firefoxで見る*1XML パースエラー: 外部実体の初めに XML 宣言がありません。と怒られる。XML的にはは処理命令として解釈されるからXML宣言をチェックするのはなんとなく分かるけど、その宣言で怒られるなんて...。

PHPのブログツールを試用していて、require_onceで読み込むファイルに

<?php
...
...
?>

と先頭行に出力する空行があったためパースエラーとなったため気付いた。PHP的な処理系だとありがちな気がするけどみんな大丈夫なのかなぁ。
まぁそれよりもXMLの仕様としてこのエラーは正しいのか良く分からん。

Firefox側の不具合と見て良いのだろうか...。

追記(2007/02/22)

XML宣言は必ず先頭に記述する必要がある。それより手前に空白文字や空行があってはならない。

XML用語事典 [XML宣言]

とありますね...(^^:

*1:ver 2.0.0.1 の場合、他バージョンは未確認。IEでは見れた