2011-11-11 40 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元素的默認命名空間是http://www.w3.org/1999/xhtml

在XHTML系列化, XML規則適用。如果您未使用xmlns=分配默認名稱空間,則沒有前綴的元素將不在名稱空間中,並且瀏覽器不會理解如何解釋您的標記。從這個意義上說,你需要顯式聲明默認的命名空間。

但是......

無論您使用的是HTML序列化或XHTML序列化並不取決於DOCTYPE,但在內容類型。如果您使用XML內容類型(例如application/xhtml+xml)提供頁面,則只能獲得XHTML序列化。

如果您服務的頁面內容類型爲text/html(我願意打賭你是,因爲幾乎每個人都這樣做),那麼您使用的是HTML序列化,而您的XHTML 1.0 Strict doctype沒有任何意義。在這種情況下,默認的名稱空間聲明除了保持驗證器安靜之外什麼也沒有實現。

+0

這是否意味着瀏覽器仍將成功呈現html元素,即使它們碰巧不屬於命名空間? – chad

+0

不,這意味着它們必須始終位於'http:// www.w3.org/1999/xhtml'命名空間才能正確呈現。但在HTML中,這種情況「神奇地」發生。 – Alohci