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

时间:2010-01-24 04:56:47

标签: html css xhtml w3c

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

2 个答案:

答案 0 :(得分:4)

不确定。您的代码会更小,因为您不需要在单词属性上包含额外的"个字符,在自闭元素上包含/个字符,您可以省略各种开始和结束标记,例如</p></li>,甚至<html><head><body>optional中的HTML 4.01(和HTML5)。有关删除HTML的一些提示,请参阅Optimizing HTMLOptimizing Optimizing 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. Well-formed XHTML, served as application/xhtml+xml
  2. Well-formed XHTML, served as text/html
  3. Not well-formed XHTML, served as application/xhtml+xml
  4. Not well-formed XHTML, served as text/html
  5. Well-formed HTML5, served as text/html
  6. 请注意,第一个在IE中不起作用。第二个适用于所有浏览器,但你只是在浪费字节;例如,浏览器不能正确解释名称空间,因此如果在另一个名称空间中包含XML,它实际上不会出现在脚本或CSS中的另一个名称空间中。第三个将显示一个大错误消息,第四个将显示正常,即使它不是格式良好的XHTML(这表明浏览器正在使用他们的HTML解析器)。

    通过使用HTML 4.01 doctype或HTML5 doctype,您可以获得与text/html示例完全相同的效果,如第五个示例所示(如果您坚持HTML 4.01 doctype,这也是有效的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>,即使您在源中没有;在XHTML中,如果您没有明确指定<tbody>,它将不会出现在DOM中。

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

答案 1 :(得分:0)

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