2

当我在 IE 中访问以下 PHP 代码的页面时,IE 产生错误,“Internet Explorer 不支持带有 DTD 的提要。此提要包含 DTD(文档类型定义)。...... DTDs 用于定义网页结构。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;">
]>  

但是,如果我将其删除,则会收到此错误:

对未定义实体“nbsp”的引用。行数:10 字符数:36

这是项目。  

所以有必要&nbsp;在描述标签中允许。

有任何想法吗?

4

1 回答 1

2

&nbsp;不是有效的 XML。使用 DTD 使其有效是一种糟糕的解决方法。

如果您的内容中需要它,那么该内容就是 HTML;在这种情况下,您应该

  • 将其包装在CDATA 标记中或
  • 将 & 符号转义为&amp;.

这个问题概述了哪种方法更好。Quentin 的回答还包含另一个解决方案,使用 XML 库来创建标记。对于您的具体示例来说,这可能有点矫枉过正,但它通常是最好的方法。

于 2012-10-18T00:28:34.557 回答