代码之家  ›  专栏  ›  技术社区  ›  Rei Miyasaka

XHTML空标记未被任何浏览器视为空标记

  •  0
  • Rei Miyasaka  · 技术社区  · 14 年前

    所以我在chrome 6、ie 8和firefox 3.5中尝试了这个xhtml 1.1代码(在validator.w3.org中验证)。这个 <p> 跟随 <a/> 得到超链接,并且 <P & GT; 跟随 <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 回复  |  直到 11 年前
        1
  •  4
  •   Quentin    14 年前

    如果为文档提供的XML内容类型(例如 application/xhtml+xml )则不应出现此问题。

    听起来您的文档是以 text/html的形式提供的(尽管 text/html规范并不支持这一点,它只适用于xhtml 1.0),在这种情况下,您需要遵循 HTML兼容性指导原则 正如您告诉浏览器(和其他用户代理)它是HTML而不是XHTML。

    < Buff行情>

    我可能只需要将所有 标签转换为 lt;></> ,但这意味着这些东西,如 lt;br/> become lt;br>/br> --which is just gredness,building valid.

    < /块引用>

    _和错误。有些浏览器会将其视为 <br><br> elements defined as empty should use self-closing syntax , everything else should have explicit start and end tags

    遗憾的是,使用正确内容类型的简单选项只会带来一个不同的问题。

    _虽然我相信当IE8和Lower失去重要的市场份额时,这将得到解决,因为IE9引入了对XHTML的支持。

    )那你不应该有这个问题。

    听起来您的文档是 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 syntax , everything else should have explicit start and end tags .

    遗憾的是,使用正确内容类型的简单选项只会带来一个不同的问题。

    Internet Explorer won't open XHTML documents

    _虽然我相信当IE8和Lower因IE9引入对XHTML的支持而失去重要的市场份额时,这将得到解决。