XHTML是HTML的一个子集吗?

时间:2013-08-27 10:48:15

标签: html xml xhtml subset sgml

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

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

这是否意味着XHTML是HTML的一个子集,或者由于任何其他原因而保留此声明?

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

  

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

不,不。

  

XHTML是否是HTML的一个子集?

没有。 HTML也不是XHTML的子集。

例如:

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

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

答案 2 :(得分:1)

你问了两个问题:

(a)XHTML是HTML的一个子集吗?答案,不。通过展示XHTML允许HTML不允许的内容(例如XML声明)轻松证明。

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