繁体   English   中英

是否有任何专业人士使用HTML 4.01严格超过XHTML 1.0 strict(content =“text / html)?

[英]Are there any pros to use HTML 4.01 strict over XHTML 1.0 strict (content="text/html)?

是否有任何专业人士使用HTML 4.01严格超过XHTML 1.0 strict(content =“text / html)?

当然。 您的代码会更小,因为您不需要在单字属性上添加额外的"字符, /自闭元素上的字符,您可以省略各种开始和结束标记,例如</p></li> ,甚至<html><head><body>等在HTML 4.01 (和HTML5 )中都是可选的 。请参阅优化HTML优化优化HTML以获取有关删除HTML的一些提示;许多这些建议仅适用于HTML 4.01或HTML5。

现在,不是每个人都需要缩小这一点; 但如果你这样做,使用HTML 4.01(或HTML5)而不是XHTML可能是有益的。

此外,Internet Explorer实际上并不支持XHTML作为XHTML; 如果你把它作为application/xhtml+xml ,它只会尝试下载它。 因此,如果您使用XHTML,则需要将其作为text/html发送到IE,这将使浏览器将其解释为HTML。 有关为什么XHTML是一个坏主意的有点过时的讨论,请参阅HTML5规范的当前编辑Ian Hickson的XHTML Considered Harmful (其中一些原因仍然有效,其中一些不再相关)。

这里有一些例子:

  1. 格式良好的XHTML,作为application/xhtml+xml
  2. 格式良好的XHTML,用作text/html
  3. 不是格式良好的XHTML,用作application/xhtml+xml
  4. 没有格式良好的XHTML,用作text/html
  5. text/html良好的HTML5,用作text/html

请注意,第一个在IE中不起作用。 第二个适用于所有浏览器,但你只是在浪费字节; 例如,浏览器不能正确解释名称空间,因此如果在另一个名称空间中包含XML,它实际上不会出现在脚本或CSS中的另一个名称空间中。 第三个将显示一个大错误消息,第四个将显示正常,即使它不是格式良好的XHTML(这表明浏览器正在使用他们的HTML解析器)。

您可以使用HTML 4.01文档类型或HTML5文档类型获得与text/html示例完全相同的效果,如第五个示例所示(如果您将HTML 4.01文档类型粘贴到其中,这也是有效的HTML 4.01)。 如果您使用HTML 4.01或HTML5,您可以节省大量空间,并且您不会因为有时将文档作为XHTML处理并有时将其处理为HTML而欺骗自己。

提防将XHTML作为text/html提供服务的另一个原因是它的处理方式不同,具体取决于它是由HTML解析器还是XML解析器解析。 例如,自闭项script标记(例如<script type="text/javascript" src="foo.js"/> )在XHTML中有效,如果由XML解析器解析,将被解析为空元件。 然而,在HTML中,这将被简单地看作是一个脚本开始标记,并且它将“吃掉”文档的其余部分,因为解析器一直在解析,假设它在脚本中,直到找到一个关闭标记。 这可能不是您想要的,如果您有时将文档视为XML并且有时将其视为HTML,则可能会使您失望。 这是这个问题的一个例子; 这两个文档在Firefox中的显示方式不同,即使它们具有相同的内容(Safari似乎对它们的处理方式相同,因此这个问题的程度因不同的浏览器而异):

这不是HTML和XHTML解析器之间的唯一区别。 在HTML中,即使你在源中没有一个<table>也会隐式地将一个<tbody>插入到DOM中; 在XHTML中,如果没有明确指定<tbody> ,它将不会出现在DOM中。

因此,将XHTML作为text/html将使您的代码比使用HTML 4.01或HTML5时更大,如果您有时将其作为真实XML处理并有时将其视为HTML,则会导致混淆。

是的:当您将HTML 4.01作为text / html发送时,您符合标准,但是当您将XHTML 1.0严格发送为text / html时则不然。 事实上,当您将XHTML作为HTML发送时,浏览器相信您正在向他们发送HTML 4.01。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM