html - XHTML——HTML 不是已经是 XML 格式了吗?

标签 html xml xhtml

我是公司的一名应用程序开发人员,直到最近才真正关注 HTML,在休息期间自学一些 JavaScript 和 HTML。

不断出现的一件事是 HTML 和 XHTML 之间的区别,特别是在有关 HTML5 的文章中。

令我困惑的概念是我认为 HTML 已经是 XML 格式了。因此,当有人开始说 XHTML 是带有 XML 的 HTML 时,我感到很困惑。

HTML 和 XHTML 之间几乎没有什么区别,如 http://www.w3schools.com/html/html_xhtml.asp 中列出的那样。

  • 添加 XHTML <!DOCTYPE>到每页的第一行
  • 向每个页面的 html 元素添加 xmlns 属性
  • 将所有元素名称更改为小写
  • 关闭所有空元素
  • 将所有属性名称更改为小写
  • 引用所有属性值

但是除了第一点和第二点之外,其他的只是更严格的语法规则,也可以应用于HTML。另外,我认为只要遵循其余要点,就可以在 HTML 文档上使用 XML 工具。

那么区分两种不同的标准有什么意义呢?

编辑:我想是 HTML5 ,这种区别甚至更不清晰(或者更接近于具有一定的包容性)。

最佳答案

tl;博士:
不,HTML 尚未采用 XML 格式。

更长的答案:

HTML 遵循与 XML 不同的规则。当然,总体来说 XML 的规则要严格一些,但这不是重点。关键是您可以拥有有效的 HTML 文档,但与 XML 关系不大。示例:

<title>?</title>
<p>Hello

这个甚至没有根元素。也就是说,它确实如此,但具有不可见的开始和结束标记。或者,像这样的一行

<script src="script.js"/>

在 HTML 中是禁忌。毁灭性的结果!但它是格式良好的 XML,您可以在 XHTML 中执行此操作。
所以不,HTML 并不几乎是 XHTML。

不久前我做了一个关于 HMTL 和 XHTML 之间差异的页面,比 W3Schools 的更完整,here 。如果您想研究差异,请使用该差异。

例如,W3Schools 上的要点列表只是一个开始,但它绝不是完整的。您还需要

  • 使所有开始和结束标记可见,即使根据 HTML 标准它们是可选的
  • 请记住<script><style> block 使用相同的解析器而不是纯文本解析器进行解析。如果样式 block 中有类似 HTML 的内容,例如 p:after {content:'</style>';} ,那就大错特错了!与未转义的 & 符号同上
  • 认识到类似 <table><tr><td></td></tr></table> 的结构导致 HTML 和 XHTML 中不同的 DOM 树
  • 不要使用<a>具有 name 的元素 anchor 的属性
  • 等等

哦,关于 W3Schools 的第一个要点,浏览器在标准模式下显示文档不需要 DOCTYPE 声明。在真正的XHTML文档中,您可以将其省略,并且显示上不会有任何差异。
您唯一需要的时候是当您在文档中命名实体时,例如 &eacute;这确实需要完整的 DOCTYPE 才能工作。 (一个完整的 DOCTYPE,包括 DTD 部分,而不是简短的 HTML5 部分。)

关于html - XHTML——HTML 不是已经是 XML 格式了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480581/

相关文章:

c# - 如何从 xelement 中提取 cdata 的值?

java - JAXB 将多个 XML 元素解码为单个类

java - 访问现有属性返回 null

jquery - 当弹出菜单显示时如何检测页面的右侧并相应地调整位置?

html - 手机上的 JSF 应用程序 - 不在 div 中滚动

javascript - 当用户离开我的网站时,将标题附加到页面(他们也会这样做)

javascript - 元素中的 "data"属性

javascript - Php echo 显示 br 标签

android - 如何在 Android 中动态拆分 EPUB XHTML 页面?

html - 内联 block 列表项之间的空格