3

我所知道的是(如果我错了,请纠正我):

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

这是否意味着 XHTML 是 HTML 的一个子集,或者该陈述是否出于任何其他原因?

4

3 回答 3

7

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”,但即使在这里,除了不同的序列化之外,也不可避免地存在差异。

于 2013-08-27T12:38:30.967 回答
3

这是否意味着 XHTML 是 HTML 的子集

不,它没有。

XHTML 是 HTML 的子集吗?

不,HTML 也不是 XHTML 的子集。

例如:

  • <input name="surname">是有效的 HTML,但不是有效的 XHTML。
  • <div />是有效的 XHTML,但不是有效的 HTML。

传统上,HTML 和 XHTML 是分开指定的。HTML5 在一个规范中定义了这两种语法。但是这两种语法是互斥的。但是,可以在文档中使用符合这两种语法的标记。例如通过使用<input name="surname" /><div></div>

于 2013-08-27T12:35:06.310 回答
1

你问了两个问题:

(a) XHTML 是 HTML 的子集吗?回答,没有。通过证明 XHTML 允许 HTML 不允许的事情(例如 XML 声明),很容易证明这一点。

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

于 2013-08-27T13:53:11.563 回答