浏览器如何区分XHTML 1.0和XHTML 5?

4

据我理解,无论是XHTML(1.0,1.1)还是XHTML 5都不需要DTD。如果这是真的,浏览器如何区分这两者呢?

我只能猜测,当浏览器支持(X)HTML 5时,所有XHTML都将按照XHTML 5规则进行解析(假设XHTML 5是XHTML 1.0的超集)。这就是它的工作方式吗?

4个回答

3

来源:http://hsivonen.iki.fi/xhtml2-html5-q-and-a/

如果我可以为XHTML5使用任何文档类型,那么浏览器如何区分XHTML 1.0和XHTML5?

它们无法区分也不需要区分。按设计,实现XHTML5的用户代理将适当地处理XHTML 1.0作为输入的内容。


2
目前没有XHTML 5。目前有HTML 4.01和XHTML 1.0。不会有XHTML 2.0,只有HTML 5。HTML 5不是XML标准(意味着HTML 5文档不是XML文档)。
也许你在看HTML 5 + XML = XHTML 5。我猜你可以将HTML 5表示为XML,但据我所知这是非标准的。更具体地说,这只是文档树的一种序列化方法,而不是标准。
为了澄清这个问题,请看HTML 5 and XHTML 5 - one vocabulary, two serializations。甚至从标题上就可以看出,“一个词汇,两种序列化”。还有与X/HTML 5团队的对话
引用:

XHTML 5规范说“一般来说,作者不应该试图在Web上使用XML”。为什么要编写像XHTML 5这样的XML规范,然后又阻止作者使用它?为什么不只是放弃对XML(XHTML 5)的支持呢?

无论我们做什么,有些人都会在HTML 5中使用XML。这是一件简单的事情——XML是描述树结构的元语言,HTML 5是一个树结构,很明显XML可以用来描述HTML 5。问题在于,如果我们不指定它,那么所有认为这是显而易见并开始这样做的人都会以稍微不同的方式做,我们将面临互操作性的噩梦。因此,我们咬紧牙关,定义了如果人们这样做,它必须如何工作。

XHTML 1.0是一个标准。它与HTML 4不同。如果可以这样说,XHTML 5只是用XML形式表示HTML 5文档。

4
你错了。XHTML5 是 HTML 5 规范的一部分。请参见 http://www.w3.org/TR/html5/introduction.html#html-vs-xhtml。 - Pavel Minaev
2
那不是完全正确的。HTML5有一种XML序列化方法,尽管它具有XML特定的功能(如命名空间),但它确实是HTML5标准。该标准甚至说强烈不建议使用XML,并且真正只包含它是因为有些人仍然会这样做。 - cletus
1
我明白你的意思。w3只提到HTML 5 + XML作为序列化方法(http://www.w3.org/TR/2008/WD-html5-diff-20080122/#syntax),因此HTML 5和“XHTML 5”或HTML 5 + XML是相同的语言,只是有两种序列化方法。不过我认为我的问题仍然相关。 - Abignale
1
@Abignale。请参考经常引用的http://hixie.ch/advocacy/xhtml,了解不鼓励使用XHTML的原因。简单来说,正确使用XHTML非常困难,尝试使用的人中大多数都会失败。而且这样做几乎没有什么好处。除非你有特定的原因,比如想解析生成的页面,否则这样做真的不值得。与普遍认为的相反,没有证据表明XML解析器比HTML解析器更快。然而,如果你需要一个解析器,XML解析器比等效的HTML解析器更广泛可用、稳定和经过充分测试。 - Alohci
1
这个答案在很多方面都是错误的;不仅 XHTML5(作为 HTML 序列化)在规范中,而且答案本身已经过时了(“有 HTML 4.01” 咯咯笑),但最重要的是 - 它自相矛盾... “没有 XHTML 5。(...)XHTML 5,如果你能这么叫它的话,不过是用 XML 形式表示 HTML 5 文档。” 要么是,要么不是。如果 W3C 把某个东西称为(在这种情况下,HTML5 作为 XML),那么它肯定,不仅可以这样称呼它,而且更应该这样称呼它 - user719662
显示剩余4条评论

2
浏览器不会。这些元素存在于同一个命名空间中,并具有相同的含义,除非WHATWG决定更改它们 - 例如b元素 - 在这种情况下,浏览器只能混淆。

不确定您的意思。浏览器不关心元素的含义,只关心如何处理它们。HTML 5草案保留了向后兼容浏览器的处理方式,改变的语义只影响试图从标记中提取含义的工具。然而,据我所知,HTML 5中元素的语义比HTML 4更为狭窄,因此任何语义提取工具的最终结果仍将遵循HTML 4规则,因为它们无法确定何时适用更狭义的含义。 - Alohci

-1

可以通过DOCTYPE进行区分(HTML5和XHTML 1.x的DOCTYPE不同),但在XHTML5中,它的存在是非强制性的;元素命名空间也相同。因此,一般来说,没有很好的方法来区分它们。如果您想编写可移植的XHTML5,则提供DOCTYPE可能是最好的选择。


Doctype在XHTML家族文档中是可选的(必须这样做,以便您可以合理地混合命名空间)。 - Quentin
我特别在我的回答中写明DOCTYPE是可选的(非强制性)。然而,我的观点是,如果您确实编写了它(作为内容作者的选择),那么浏览器很可能会将其视为XHTML5的指示器。 - Pavel Minaev
浏览器过去没有太关注 Doctypes(除了作为智力测试来确定它们是否应该使用 Quirks 或 Standards 模式),我认为这种情况不会改变。 - Quentin
HTML5的整个意义在于让浏览器厂商达成一致,以便按照规范进行开发。这也是为什么它首先由厂商编写的原因。如果某些东西在规范中出现,那么很有可能会被使用。 - Pavel Minaev
我不确定我同意最后那个陈述,但无论如何都是无关紧要的 - 规范中没有XHTML5的Doctype,事实上,规范明确说明没有标准。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接