2011-12-27 711 views
0

我試圖在創建我的網站時遵循xhtml 1.0嚴格標準。 現在,validator.w3.org根據XHTML 1.0 Strict標準驗證我的文檔是有效的。下面是一個代碼,例如:服務XHTML和自我關閉標籤

<div style="color:#f00"><div style="color:#00f" />Text should be red and not blue</div> 

不幸的是,火狐,Chrome和Internet Explorer解析不正確的文件: 他們似乎都忽略了我的自閉標籤(主要是< DIV />,<的閉幕詞li />和其他一些標籤),從而導致網站顯示錯誤,文本呈藍色。如果我用< div> </div>替換< div />標籤,看起來一切正常。我讀到它,並根據XML文檔,包括XHTML,可以自我封閉

這裏是自帶的文檔中的重要頭信息:

<?xml version="1.0" encoding="UTF-8" ?> 
<!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" xml:lang="en"> 
     <head> 
      <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 

的Apache2本身仍發送內容類型的文本/ HTML,因爲我還沒有想出如何覆蓋.php mime類型,儘管< head>中的信息應該推翻這種方式。

如何使用自我結束標記(如< div />)與他們正常解析正常的瀏覽器?

回答

0

XHTML是HTML使用XML和HTML沒有像你顯示的自閉標籤。這適用於XHTML,但不適用於HTML,到目前爲止,您並不是作爲application/xml + xhtml服務的。

內容類型元標記不會影響服務器如何爲頁面提供服務,並且僅用於脫機使用。所以你必須把它設置在服務器上或者用PHP來設置,就你而言。

+0

Aaaaaaaah!感謝那! – David 2011-12-27 15:27:10

0

用PHP發送此:

<?php 
header('Content-Type: application/xhtml+xml;'); 
?> 

這就是你使用PHP如何重寫標頭。你必須小心,因爲header()只適用於沒有輸出已發送。這意味着你不能在<?php部分之前放置任何東西,標題將不起作用,因爲你的服務器已經發送了標題和任何內容。