我所知道的是(如果我错了,请纠正我):
- XML 是 SGML 的子集。
- XHTML 是一个应用程序,也是 XML 的一个子集。
- HTML 是 SGML 的一种应用。
这是否意味着 XHTML 是 HTML 的一个子集,或者该陈述是否出于任何其他原因?
XML 不是 SGML 的子集,但很接近。XML 有自己的规则,部分不同于 SGML,尽管它主要由 SGML 组成,省略了大部分功能。
XHTML(它是几种标记语言的统称)可以称为应用程序和 XML 的子集,但除此之外,XHTML 标记具有分配给它们的含义,而 XML 本身并没有说明任何含义。
HTML 名义上是 SGML 在 HTML 2.0、HTML 3.2、HTML 4.0 和 HTML 4.01 规范中的应用,但这始终只是理论上的。只有验证器将 HTML 视为 SGML。从来没有任何浏览器实现了这些规范中定义的 HTML。原则上属于其中的几个 SGML 特性缺乏全部支持。
即使子集关系都为真,“XHTML 是 HTML 的子集”的结论也不会从前提中得出。A ⊂ B 和 C ⊂ B 和 D ⊂ B 并不意味着 C ⊂ D。
XHTML 不是 HTML 的子集。有一些 XHTML 规范包含 HTML 规范中未包含的元素。XHTML 和 HTML 都是集合名词。XHTML 1.0 在 XML 语法中被描述为 HTML 4.01,因此它们可能被称为替代语法形式。但即使这样也不是完全正确的。除了明显的语法差异外,XHTML 1.0 和 HTML 4.01 之间还有几个记录不充分的差异。HTML5 被定义为两种语法,两种序列化,“HTML”和“XHTML”,但即使在这里,除了不同的序列化之外,也不可避免地存在差异。
这是否意味着 XHTML 是 HTML 的子集
不,它没有。
XHTML 是 HTML 的子集吗?
不,HTML 也不是 XHTML 的子集。
例如:
<input name="surname">
是有效的 HTML,但不是有效的 XHTML。<div />
是有效的 XHTML,但不是有效的 HTML。传统上,HTML 和 XHTML 是分开指定的。HTML5 在一个规范中定义了这两种语法。但是这两种语法是互斥的。但是,可以在文档中使用符合这两种语法的标记。例如通过使用<input name="surname" />
和<div></div>
你问了两个问题:
(a) XHTML 是 HTML 的子集吗?回答,没有。通过证明 XHTML 允许 HTML 不允许的事情(例如 XML 声明),很容易证明这一点。
(b) 如果 H 是 S 的子集并且 X 是 S 的子集,这是否意味着 X 是 H 的子集?绝对不是:那将是一个严重的逻辑错误。