任何浏览器都不会将XHTML空标记视为空标记

时间:2010-10-07 20:07:58

标签: html xml xhtml

所以我在Chrome 6,IE 8和Firefox 3.5中尝试过这个XHTML 1.1代码(在validator.w3.org上验证)。 <p>之后的<a/>获取超级链接,<p>之后的<div/>变为红色:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html 
    xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
    </head>
    <body>
        <p><a href="http://www.yahoo.com"/></p>
        <p>
            this should not be hyperlinked
        </p>
        <div style="background:red"/>
        <p>this should not be red</p>
    </body>
</html>

对于任何尝试使用XML解析器/生成器处理文档的人来说,这都是个坏消息。

我或许可以将所有</>代码转换为<></>,但这意味着像<br/>这样的内容会变成<br></br> - 这很奇怪,尽管很奇怪有效的。

思想?

1 个答案:

答案 0 :(得分:4)

如果您使用XML内容类型(例如application/xhtml+xml)提供文档,那么您不应该遇到此问题。

听起来您正在以text/html的形式提供文档(虽然this isn't blessed by the text/html specification只能达到XHTML 1.0),在这种情况下,您需要关注the HTML compatibility guidelines,因为您告诉浏览器(和其他用户代理)它是HTML而不是XHTML。

  

我或许可以将所有</>代码转换为<></>,但这意味着像<br/>这样的内容会变成<br></br> - 这很奇怪,尽管很奇怪有效的。

......而且错了。有些浏览器会将其视为<br><br>Elements defined as EMPTY should use self-closing syntaxeverything else should have explicit start and end tags

可悲的是,使用正确内容类型的简单选项只会引入一个不同的问题......

Internet Explorer won't open XHTML documents

...虽然我相信当IE9引入对XHTML的支持时,IE8及更低版本将失去显着的市场份额,这将得到解决。