XHTML是HTML的子集吗?

4

据我所知(如有错误请纠正):

  • XML是SGML的一个子集。
  • XHTML是XML的应用程序和子集。
  • HTML是SGML的一个应用程序。

这是否意味着XHTML是HTML的子集,或者这个说法有其他原因?

3个回答

8

XML并不是SGML的子集,但很接近。XML有自己的规则,与SGML部分不同,尽管大多数情况下它由SGML组成,省略了大部分功能。

XHTML(几种标记语言的集合名称)可以称为XML的应用和子集,但除此之外,XHTML标签还具有赋予它们意义的含义,而XML本身并不涉及任何含义。

HTML在HTML 2.0、HTML 3.2、HTML 4.0和HTML 4.01规范中名义上是SGML的应用,但这只是理论上的。只有验证器将HTML视为SGML。从未有任何浏览器实现符合这些规范定义的HTML;几个原则上属于它们的SGML特性缺乏所有支持。

即使所有子集关系都是真实的,结论“XHTML是HTML的子集”也不会从前提中得出。A ⊂ B和C ⊂ B和D ⊂ B并不意味着C ⊂ D。

XHTML不是HTML的子集。有包含在HTML规范中未包含的元素的XHTML规范。而且XHTML和HTML都是集合名词。XHTML 1.0被描述为XML语法下的HTML 4.01,因此它们可以称为替代语法形式。但即使这也不是严格正确的;除了明显的语法差异之外,XHTML 1.0和HTML 4.01之间存在着几个文档不充分的差异。HTML5正在使用两种语法、两种序列化方式进行定义,“HTML”和“XHTML”,但即使在这里,除了不同的序列化方式之外,还有必然的差异。


3
这是否意味着XHTML是HTML的子集?不是。同样,HTML也不是XHTML的子集。例如: 是有效的HTML,但无效的XHTML。
是有效的XHTML,但无效的HTML。传统上,HTML和XHTML是分别指定的。HTML5在单个规范中定义了两种语法。但这两种语法是互斥的。然而,可以使用标记在文档中以符合两种语法的要求,例如通过使用

准确地说,<div /> 原则上是有效的 HTML(尽管它的含义并不是你想象的那样),在实践中浏览器会将其视为 <div> - Jukka K. Korpela

1

您提出了两个问题:

(a) XHTML 是否是 HTML 的子集呢?答案是否定的。可以很容易地证明,XHTML 允许一些 HTML 不允许的东西(比如 XML 声明)。

(b) 如果 H 是 S 的子集且 X 是 S 的子集,这是否意味着 X 是 H 的子集呢?绝对不是:那将是一个严重的逻辑错误。


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