2011-11-11 15 views
0

私がxhtml文書を持っていれば、デフォルトの名前空間は "xhtml"と仮定します。任意の利点、または欠点が明示のように、このデフォルトの名前空間を宣言するために、そこにある:デフォルトのxhtml名前空間の明示的宣言の利点

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <head> 

    . . . 

答えて

2

HTML5互換性のあるブラウザでHTMLのシリアライズでHTML要素のデフォルトの名前空間は、XHTMLのシリアライゼーションでhttp://www.w3.org/1999/xhtml

ですXMLルールが適用されます。 xmlns=を使用してデフォルトの名前空間を割り当てないと、接頭辞のない要素は名前空間になくなり、ブラウザはマークアップの解釈方法を理解しません。その意味で、デフォルト名前空間を明示的に宣言する必要があります。しかし

...

あなたがHTMLの直列化またはXHTMLのシリアライゼーションを使用しているかどうかは、DOCTYPEではなく、コンテンツタイプにはない依存します。 application/xhtml+xmlのようなXMLコンテンツタイプでページを提供する場合にのみ、XHTMLのシリアル化を取得します。

コンテンツタイプがtext/htmlのページを提供していれば(ほとんどの人がそうしているので、あなたは喜んでいるはずです)、HTMLシリアル化を使用しています.XHTML 1.0 Strict doctypeは意味がありません。その場合、デフォルトの名前空間宣言は、バリデータを静かに保つこと以外は何も達成していません。

+0

これは、ブラウザが名前空間に属していなくてもhtml要素を正常にレンダリングすることを意味しますか? – chad

+0

いいえ、正しく表示されるには、常に 'http:// www.w3.org/1999/xhtml'名前空間になければならないということです。しかし、HTMLでは、これは "魔法のように"起こります。 – Alohci

関連する問題