是否只有XML序列化支持HTML 5构造?

时间:2015-01-26 20:13:06

标签: css html5 dom xhtml specifications

是否存在任何“事物”(元素,DOM操作,样式,元素的嵌套,属性,任何类似的东西......),人们可以在XHTML 5中做到,那个人不能用HTML 5做什么?我记得在网上看过一个这样的案例,但我不记得我看到它的位置。

除了使用SVG和MathML等外部命名空间中的内容之外(HTML也支持)。

作为参考,相反问题的答案数量“您在HTML 5中可以做什么,而您在XHTML 5中无法做到?”鉴于XHTML的严格性,它们非常大。因此,我正在寻找这个问题的答案。

4 个答案:

答案 0 :(得分:4)

是,例如实体声明和对如此定义的实体的引用。它们是XML的一部分,因此在使用XML序列化时必须支持它们,因为它需要遵循通用XML规则。例如:

<!DOCTYPE html [
<!ENTITY foo "Hello world">
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Demo</title>
</head>
<body>
&foo;
</body>
</html>

答案 1 :(得分:3)

  • XHTML,XML支持xml-stylesheet声明。不只是CSS而且还有XSLT。这可以在呈现之前转换文档树.XSLT还通过document("foo.xml")支持包含,可以用作XInclude代理,因为现在没有浏览器支持后者。
  • XML解析器验证格式良好
  • XHTML支持名称空间,允许嵌入其他XML内容(不仅仅是SVG和MathML)
  • CDATA部分
  • .innerHTML.insertAdjacentHTML().createContextualFragment()验证格式良好

这个话题一般非常有趣。例如。 XHTML5解析器与纯XML解析器并不完全相同,因为HTML5规范要求对XML解析器进行一些故意违反,例如,支持<template> element

还有一些状态,如果您尝试通过XHTML fragment serialization algorithm导出错误,则可以使用有效的DOM。 并且HTML Fragment serialization algorithm可能会发出一个字符串,当HTML解析器再次解析时,该字符串将导致不同的DOM。

所以基本上所有以下三个都不是完全同构的,任何组合:

  • XHTML5序列化
  • (X)HTML5 DOM
  • HTML5序列化。

答案 2 :(得分:1)

在XHTML中,您可以在非void元素上使用自动关闭语法(/>):

<script src="js.js" />

虚空元素可能有杂散结束标记:

<input></input>

答案 3 :(得分:0)

我能够在unofficial Q&A by hsivonen中找到我隐约记得的东西。我还在寻找其他类似的功能&#34;。

  

[...]在这种情况下,您必须避免text / html中不支持的构造(例如div作为p的子级)。

搜索更多信息时,我发现this page(从顶部开始的第二篇文章):

  

但基本上p不能在HTML中包含div(或者使用mime类型text / html提供XHTML)。如果您使用XML mime类型提供XHTML,您可以在理论上这样做,但结果将不是有效的XHTML。

说HTML解析器根本不允许这种可能性,而XHTML解析器不需要再猜测代码,接受它但它仍然无效。

我决定对其进行测试:采用application/xhtml+xml page,尝试使用Chrome开发工具在div内添加p&#34;编辑为HTML& #34;功能。有效。我复制了源代码,做了相同的更改并在validator.nu中进行了测试。我觉得它有点失望,这标志着它无效。

尝试以相同的方式在text/html页面中添加div是不可能的。一旦我退出&#34;编辑为HTML&#34;模式,它只是移动了div之后的p