2012-10-18 65 views
1

當我在IE中訪問以下PHP代碼的頁面時,IE會產生錯誤,「Internet Explorer不支持使用DTD的提要。包含DTD(文檔類型定義)...... DTD用於定義網頁的結構,Internet Explorer不支持Feed中的DTD。「IE無法顯示錯誤提示:Internet Explorer不支持DTD提要

<?php 
header('Content-Type: text/xml'); 
echo '<?xml version="1.0" encoding="UTF-8" ?>'; 
?>   
<!DOCTYPE doctypeName [ 
    <!ENTITY nbsp "&#160;"> 
]>     
<rss version="2.0"> 
<channel> 
    <title>Sample Feed</title> 
    <link>http://google.com</link> 
    <description>This is a test</description> 
     <item> 
      <title>Item</title> 
      <description>This is the item.&nbsp;&nbsp;</description> 
     </item> 
</channel>  
</rss> 

我懷疑這部分的問題是:

<!DOCTYPE doctypeName [ 
    <!ENTITY nbsp "&#160;"> 
]> 

但如果我刪除它,我得到這個錯誤,而不是:

Reference to undefined entity 'nbsp'. Line: 10 Character: 36

This is the item.  

因此,有必要允許在&nbsp;描述標籤。

任何想法?

+0

爲什麼您首先需要' '?這不是有效的XML。如果你在內容中需要它,那麼它就是HTML內容,你應該把它放在'CDATA'標籤 –

+0

@Pekka'你爲什麼首先需要 ?' - 它是我的實際程序中自動生成的內容提要。所以它不可避免地被插入。 – Teno

回答

2

&nbsp;是無效的XML。使用DTD使其有效是一個糟糕的解決方法。

如果您在內容中需要它,則該內容實際上是HTML;在這種情況下,您應該

This question概述了哪種方法更好。 Quentin的答案還包含另一個解決方案,使用XML庫創建標記。對於您的具體示例而言,這可能是過度的,但它通常是最好的方式。

+0

謝謝。 'CDATA'似乎是要走的路。 – Teno

相關問題