现在我的问题是,这是否可以写我的标记像这样?任何浏览器都会窒息吗?
就个人而言,我认为它看起来更干净,< span class =“presentational”/>如果它将是空的。
在我开始之前;我努力不要在这边。
XHTML 1.1规范说,网络服务器应该提供XHTML与应用程序的内容类型/ xhtml xml。 Firefox会将那些尾部斜杠显示为无效,因为您的文档以文本/ html而不是application / xhtml xml的形式提供。拿这两个例子;相同的标记,一个作为application / xhtml xml,另一个作为text / html。
http://alanstorm.com/testbed/xhtml-as-html.php
http://alanstorm.com/testbed/xhtml-as-xhtml.php
Firefox将元标记中的尾部斜杠标记为对于使用text / html提供的文档无效,并且对使用application / xhtml xml提供的文档有效。
为什么这是有争议的
对于浏览器开发人员来说,XHTML的要点是你可以将文档视为XML,这意味着如果有人向你发送了无效的内容,规范说你不必解析它。因此,如果文档作为application / xhtml xml提供并且具有非完整的内容,开发人员可以说“不是我的问题”。你可以看到在这里的行动
http://alanstorm.com/testbed/xhtml-not-valid.php
当文档作为文本/ html提供时,Firefox将其视为一个普通的旧HTML文档,并使用宽恕,修复它,解析例程
http://alanstorm.com/testbed/xhtml-not-valid-as-html.php
因此,对于浏览器制造商,XHTML作为文本/ html是可笑的,因为它从来没有被浏览器的渲染引擎处理为XML。
许多年前,想要超越标记猴子(免责声明:我包括自己作为其中之一)的Web开发人员开始寻找方法来开发没有涉及三次嵌套表的最佳实践,但仍然允许令人信服的设计体验。他们/我们锁定到XHTML / CSS,因为W3C说这是未来,唯一的另一个选择是一个单一供应商(微软)控制defacto标记规范的世界。真正的邪恶有单一的供应商,而不是那么多的微软。我发誓。
那么争议在哪里? application / xhtml xml有两个问题。第一个是Internet Explorer。在IE中有一个遗留的错误/功能,其中作为application / xhtml xml的内容将提示用户下载文档。如果你试图访问上面列出的xhtml-as-xhtml.PHP与IE可能发生了什么。这意味着如果你想使用application / xhtml xml,你必须浏览器的嗅探IE,检查Accepts头,并只提供application / xhtml xml接受它的浏览器。这是not as trivial,因为它听起来正确,也违反了“一次写”的原则,Web开发人员正在努力。
第二个问题是XML的粗糙度。这又是一个易于发生的问题,但有些人认为单个坏标签或单个字符编码不当不会导致用户看不到他们想要的文档。换句话说,是的,规范说,你应该停止处理XML,如果它不是形成良好,但用户不关心规范,他们关心他们的猫的网站被打破。
为这个问题添加更多的汽油是XHTML 1.0(不是1.1)规范说,XHTML文档可以作为文本/ html,假设某些compatibility guidelines被遵循。像img标签是自我关闭等等。这里的关键是可能。在RFC speak,可能意味着可选。 Firefox选择不处理使用XHTML doctype提供的文档,但将text / html的内容类型视为XHTML。但是,W3C验证器会高兴地报告这些文档有效。
我将让读者思考一个文化的同时奇迹/恐怖,它写一个文档来定义它们意思是什么意思。
向前进
最后,这是整个HTML 5事情是什么。 XHTML成为这样一个政治热土豆,一群想要移动语言的人决定走另一个方向。他们为HTML 5生成了一个规范。目前在W3C中已经散列了,并预计在未来十年内完成。同时,浏览器供应商正在选择并选择正在进行的规范中的功能并实现它们。
评论的更新
在评论中,Alex指出,如果你要嗅探某事,你应该检查Accept头,看看应用程序/ xhtml xml是否被用户代理接受。
这是绝对正确的。一般来说,如果你要嗅探,嗅探的功能,而不是浏览器。