2012-11-01 99 views
2

我正在學習XHTML。如果我的理解是正確的,那麼XHTML遵循嚴格的語法。所以我創建了這個標記:如何使xhtml頁面遵循嚴格的語法檢查?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html> 
    <head>  
     <title>XHTML page</title> 
<!-- </head> --> 
    <body> 
     This is the body 
    </body> 
</html> 

我已經評論了結尾標籤來檢查XHTML的嚴格性。當我用.xhtml擴展名保存該文件時,它顯示錯誤。但是,當我用.html擴展名瀏覽器保存時,它非常寬容,並且不考慮缺少頭標記而呈現標記。

所以我的疑問是,擴展名(.xhtml)是什麼使一個文件實際上是xhtml,並給它嚴格的語法行爲?它不應該是DOCTYPE來決定它是否是一個xhtml?

從我讀的地方看,在HTTP中,文件擴展名並不重要,它的頭文件類型也很重要。

+0

這是確定您是否起訴xhtml/html的DOCTYPE。文件類型與它無關,應保持爲.html –

+0

@Diodeus那麼爲什麼這個錯誤沒有被通知? – Ivin

+0

瀏覽器試圖非常寬容,但問題可能在於你的編輯器(哪一個??)。這裏有一個有效的文檔類型的列表使用: http://www.w3.org/QA/2002/04/valid-dtd-list.html –

回答

3

當從網絡服務器提供服務時,它是確定瀏覽器是否將文檔視爲XHTML或HTML的MIME類型(又稱內容類型)。瀏覽器從不使用DOCTYPE來確定頁面是否是XHTML(但是HTML5以前的驗證器可以)。

當瀏覽器從文件系統本地讀取文件時,它確實使用文件擴展名來決定它是XHTML還是HTML。

有時,但並非總是如此,服務器的設置使得如果客戶端在它的末尾請求一個帶「.xhtml」的url,那麼這個文檔將會被提供一個XHTML(例如,application/xhtml+xml) MIME類型。

+0

「通過瀏覽器從文件系統本地讀取文件時」 - 如果從本地主機運行該文件,該怎麼辦?我遇到了同樣的問題。 – Ivin

+1

然後,您的本地Web服務器設置爲以「application/xhtml + xml」的形式提供.xhtml文件。 – BoltClock