那么XHTML5发生了什么?

http://www.w3.org/TR/html5/

该页面同时是xhtml5和html5的草案?
那么这些文档类型之间没有区别吗?

评论

从2014年12月8日开始,W3C仍在按照该标准进行开发。 w3.org/TR/html5和w3.org/TR/html5/the-xhtml-syntax.html已于2014-10-28更新。

到了2015年,XHTML已经成为W3C标准!...查看最新讨论

您接受了错误的答案。 vaxquis的答案是正确的答案。

#1 楼

在撰写本文时,很明显,在2012年,W3C决定放弃XHTML而使用HTML5。这一决定是出于以下几个原因:


很少有人真正对XHTML感兴趣。大多数网站都是用纯HTML编写的。
很少有人真正了解XHTML的含义以及如何使用它。太多假装提供XHTML的网站使用了错误的标头,而不是Content-Type: application/xhtml+xml
即使您完全了解XHTML是什么,也必须是标头,对于某些糟糕的浏览器却不接受/不支持application/xhtml+xml内容的情况,这确实很棘手。类型。这意味着您必须根据浏览器更改标头。
XHTML的XML部分还引起了开发人员必须解决的一些怪异情况。当您将包含HTML字符的文本(例如INVALID_STATE_ERR: DOM Exception 11)分配给XHTML页面内的元素时,会出现é消息。当您在执行AJAX请求后在大型Web应用程序中遇到此错误及其非常有用的消息时,您真的不知道是否是JQuery,AJAX或其他错误。
编写HTML 5代码不会意味着将所有标签混在一起。如果您对XML和XHTML充满热情,仍然可以编写看起来与XML非常相似的HTML 5代码。
在手机的早期,XHTML对于功能不太强大的移动设备很有趣。解析XML比HTML容易得多。现在,对于双核移动设备而言,它们是否必须解析干净的有效XML或充满黑客和混合标签的肮脏HTML并不重要。

2014年10月的规范提到了XHTML语法。目前尚不清楚是否存在诸如新的XHTML语言(不是语法)之类的东西,如果存在,XHTML的地位如何,主流浏览器是否会采用新的XHTML标准。 br />

评论


我认为您唯一缺少的答案是对多语种标记的引用

– yannis
2012年5月23日15:21

@ErikReppen but you'll lose the benefit of entity references like  

– Mr Lister
Dec 17 '13 at 15:54

糟糕的决定。我们放弃了XML附带的XSL工具。

– Mihai Danila
14-10-28在12:26

这句话是错误的。 W3C尚未放弃HTML5中的XHTML。XHTML语法,词汇和API

–Rob
2014年12月8日14:50

@MrLister声明<!DOCTYPE html>(没有系统标识符,没有公共标识符)是DOCTYPE声明,但不是XHTML1。声明<!DOCTYPE html PUBLIC“-// W3C // DTD XHTML 1.1 // EN”“ http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>不是XHTML1,而是XHTML 1.1。与XHTML Basic类似。大多数浏览器始终以标准模式呈现application / xhtml + xml。如果我创建自己的基于DOCTYPE的XHTML版本,请使用(X)HTML命名空间,将其用作application / xhtml + xml并遵循HTML5,即使在使用IE9的情况下,我也很安全。

–克里斯蒂安·胡杰(Christian Hujer)
2014年12月31日下午16:06

#2 楼

XHTML5是“将HTML5序列化为XML”的同义词。

有多种具体语法可用于传输使用这种抽象语言的资源,本规范中定义了其中两种。 > ...
第二种具体语法是XHTML语法,它是XML的应用程序。当使用XML MIME类型(例如application / xhtml + xml)传输文档时,Web浏览器会将其视为XML文档,由XML处理器进行解析。提醒作者,对XML和HTML的处理不同。特别是,即使是很小的语法错误也将阻止标记为XML的文档被完全呈现,而在HTML语法中将被忽略。该规范定义了XHTML语法的版本5.0,称为“ XHTML 5”。


引用http://www.w3.org/TR/html5/introduction.html#html -vs-xhtml;请注意,这也表示“本节是非规范性的。”。

此外,这里还有一个不错的文档,用于编写HTML5多重标记(页面,可以序列化为常规HTML5和XML):
http://dev.w3.org/html5/html-polyglot/html-polyglot.html#bib-HTML5
甚至还有一个验证器!
http://html5.validator.nu /
由于它基本上仍然是HTML5,但如今仍然很少使用(现在可能很少使用),它现在仍然很少使用。
简单地说:对HTML5规范的每次更改也是与之对应的隐式更改XHTML5。

#3 楼

HTML5是事实上和法律上的标准!
HTML5-用于HTML和XHTML的词汇表和相关API
W3C建议书2014年10月28日
该标准的标题包含字符串“和XHTML”,因此,我们正在谈论W3C将HTML和XHTML合并为一个单一标准的最终决定;
XHTML的部分和重要说明:

MIME类型是application/xhtml+xml

2.2 .4。与XPath和XSLT的交互
9。 XHTML语法


理解和使用
LF Sikos总结,

XHTML5是HTML5的XML序列化。语法由HTML5规范描述。但是,不要混淆,因为XHTML5是XML的一种应用程序。换句话说,HTML5和XHTML5具有相同的词汇表,但解析规则不同。
HTML5文档也可能是有效的XML文档。该标记通常被称为“多语言”语言。它是同时为HTML5和XML文档的文档的重叠语言。 HTML5和XHTML5序列化是相互兼容的。但是,XHTML5具有更严格的语法。此外,XHTML5的某些部分在HTML5中无效,例如处理指令。

因此,严格来说(由@vaxquis强调)“ XHTML只是XML序列化的语法”,没有DTD或其他类型的XML模式。
有些人不喜欢说“ XHTML5是XHTML”。这个问题必须分解成一个迷你的常见问题,有关“何时可以将其用作XHTML”。这是WIKI,请纠正是否存在一些“误解” ...

常见问题解答
我可以将XHTML5用作“ 2014年XHTML标准版本”吗?
有在“完美且通用的HTML5-to-XHTML5 / XHTML5-to-HTML5转换”中出现一些问题时,您必须进行“个人选择”并丢失信息。由于上下文不同,答案如下:


松散地说:是的。有很多(简单的)映射完美且可逆的示例。


严格来说:没有。另请参见下面的@vaxquis评论和此页面中的旧答案。一些典型的问题:

https://stackoverflow.com/a/16591582/287948
...请使用更多示例进行增强...



我可以与XSLT,XPath等一起使用(无所畏惧!)XHTML5序列化吗?
可以。甚至可以序列化片段。
我可以验证XHTML5吗?
是的,但是比旧的DTD更快又不容易...请看作验证器的复杂验证器。nu
我可以将XHTML5用作非验证器吗? -XSLT链中的终端输出?
可以。让我们解释一下您可以做什么。
某些框架(例如Cocoon)使用“ XSLT链”。 HTML5和XHTML5输出可以用作“链中的最后输出” ...当然,在中间步骤中,不能使用HTML5,因为它不是XML,但是可以使用XHTML5。
以上问题验证重新出现在这里:没有强硬的约定,因此有时“ XHTML标准结构”的清晰度降低。在这种情况下,您必须注意“您自己的约定”并保持一致。
使用HTML5页面的DOMDocument时,我可以使用saveXML()方法吗?
是的。
这是典型的使用序列化建议的情况。 XML将是有效的,XHTML5代码是从原始HTML5和DOM状态映射而成的。但是,在某些结构中,某些信息可能会丢失,如上所述。

评论


不。 XHTML只是HTML5的XML序列化的一种语法,大约一年前,我已经在答案中涵盖了这个主题。没有“合并”,因为在搁置XHTML 2.0之后,早期的W3C / WHATWG HTML5草案已将其“合并”;您在这里误解了上下文。此外,XPath和XSLT仅与该事件有切线关系;另外,众所周知的MIME类型是“ XHTML部分和/或注释”吗?另外,您基本上不能将HTML序列化为XHTML-提出的解决方案是将多序列化同时写成序列,而不是“重新序列化”它。

–user88637
2015年2月9日在15:19



哼... @vaxquis,好吧,我编辑过,请帮忙。在这里,在评论时,我们用相同的语言说:您在引言中使用了“严格说”,而在引言中我使用了“更广泛的说” ...现在,我们可以在答案文本中指出您要纠正的内容。

– Peter Krauss
2015年2月9日15:45

#4 楼

是的,不幸的是XHTML不见了。

为MainMa的绝妙回答增加了另外1个原因:

创建XHTML时,WebApp打算使用它来提供结构化内容,非浏览器软件可以理解,该软件将没有标记汤HTML解析器。对于ScreenReaders,XHTML仍然很棒,但是对于任何其他类型的软件,WebServices都可以满足需求,并且它们大多使用XML或JSON。 SOAP本身具有自己的XML模式,比XHTML更简单且面向操作。

据我所知,世界上甚至没有1个WebApp为浏览器和其他客户端提供相同的HTTP消息。 。即使是REST体系结构,该体系结构原本旨在根据客户端的首选项为多种内容类型提供相同的内容表示形式,但也没有用于XHTML /提要浏览器。

例如在Java EE中,使用在Eclipse中,我们可以部署一个包含Servlets + JSP来服务HTML的独特战争文件,以及Axis2来服务WebService的战争文件。与针对所有浏览器和WebService的独特,复杂的软件相比,开发分离的软件要容易得多。

REST被拒绝的主要原因是复杂性(它的原意是简单!)开发一种服务器,该服务器可以为任何类型的客户端提供相同的内容,而无需任何了解。而且,很难满足Web的快速发展需求,并保持稳定的定义,这种定义不会在每次XHTML更改时强制更新非浏览器客户端,例如,当它由许多不同的模块构建时,它可以使XHTML保持有效。

同样,由于所有那些旨在构成浏览器渲染布局的XML元素,开发一个非浏览器客户端也很难解析XHTML文档,即使它是有效的。 ,而不是要保留内容。

如果REST采用者已经抱怨SOAP的XML复杂性(这比用于浏览器的XHTML更为简单),请想象一下处理多种客户端类型(服务器和客户端)的XHTML有多么困难。

实践:使用HTML(如果需要的话),类似XML,为浏览器构建WebSite,以及为非浏览器客户端构建任何WebService解决方案。但是,我也认为必须创建XHTML5。 XHTML 1.1(好的,1.0,1.1不可用)将在HTML5中过时,并且我们仍然需要一个接受HTML5元素并验证XML格式正确性的验证器。

评论


也许我有点迟了,但是与1.0相比XHTML 1.1怎么不可用?如果有的话,其DTD包含更多元素。除非您在谈论框架集之类的东西?

–李斯特先生
2013年12月17日15:58

XHTML5的词汇表和相关的API

–Rob
2014-12-8 14:48