XHTML标记自关闭的缺陷分析

如果您熟悉XML相关的开发,您可能会习惯于这种写作方式。您可以认为不包含XML中的子节点的任何元素都可以用这种方式编写,因此XHTML中没有内容标签。理论上,当然,任何标签都可以用自关闭的方式编写。然而,浏览器兼容性带来了新的问题,即IE不能正确地识别某些标记的自关闭方法。XHTML

请尝试输入以下XHTML代码,在伊江浏览:您好,您会发现您只能看到前面的Hello,而不是后面的世界,这是很难解释的。可能有很多人遇到了这个问题,花了几个小时没有合理的解释。

这个解释来自另一个类似的代码:你好,世界,你看看伊江的显示器,你能得到合理的解释吗我们可以看到,前你好是正常显示,后者的世界显示在文本框内,这证明了没有正确认识,文本标签被自我封闭,但当它还没有被关闭,后者的内容是文本内容。

在这一点上,我们理解为什么前面的代码不能看到世界的背后,因为它被认为是脚本的一部分,这表明当我们使用XHTML时,我们不能像我们喜欢的那样使用自关闭的XML。只有几个不需要关闭的标签可以用自关闭的方式编写。如果其他标签没有任何内容,它们应该成对关闭。

最后,需要提醒大家,解析器IE其实并不是弱智,很多地方都不严谨,因为解析器可能会遇到问题,所以当我们编写XHTML或者适应一些旧HTML继承的习惯时,似乎并不像XML那样符合他们写的标准。再试试一个:你好,世界,注意IE和Opera的显示效果。

更新:一些读者认为我的例子是不是在XHTML规范线,所以请先阅读XHTML规范。空元素是一段翻译如下:空元素必须有结束标签,或者结束:例如,或。请参阅HTML兼容性标准保证向后兼容HTML4浏览器信息。可以看出,这样的例子也给出了规范,表明书写方法是在XHTML规范整合,但不与HTML4标准兼容。所以是XHTML和最后HTML4兼容吗让我们看一下兼容性问题的部分。中文翻译如下:虽然XHTML1.0文件不与现有的浏览器兼容,它在实践中是不难的。因此,它并没有规定文件必须向下兼容。我给出的示例都是合法的XHTML文档片段。当出现在完整的XHTML中时,它们也可以通过W3C标记验证服务进行验证。

再次更新:实际上,我写这篇文章的目的不是强调它只符合XHTML规范。这是不足够的强调,XHTML是同时与HTML4兼容,但更多的兼容性需要考虑。例如,您的CMS允许用户提交的HTML,交由SgmlReader或其他方法格式化为HTML,XHTML,也许还做其他的XML处理,就可以将提交对于这种情况的用户,你需要找出问题所在,通过调试是不容易的,因为XML没有违反任何规则。每一步都符合语义,另外,最好不要写,因为只有一个空的空间,有些弱语法分析器不能正确识别。