有没有专业人士使用HTML 4.01严格超过XHTML 1.0 strict(content =“text / html)?
答案 0 :(得分:4)
不确定。您的代码会更小,因为您不需要在单词属性上包含额外的"
个字符,在自闭元素上包含/
个字符,您可以省略各种开始和结束标记,例如</p>
,</li>
,甚至<html>
,<head>
,<body>
等optional中的HTML 4.01(和HTML5)。有关删除HTML的一些提示,请参阅Optimizing HTML和Optimizing 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(其中一些原因仍然有效,其中一些不再相关)。
以下是一些例子:
application/xhtml+xml
text/html
application/xhtml+xml
text/html
text/html
请注意,第一个在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。