SGML,XML,HTML和XHTML之间的关系和差异


16
  1. 我想知道Wikipedia中的 “个人资料”是什么意思:

    XML是ISO标准SGML的配置文件,并且大多数XML都原样来自SGML。

  2. 根据 http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html

    HTML是SGML的子集。

    XML是SGML的功能强大的子集。

    XHTML是HTML的扩展和子集。

    “一个是另一个的子集”是否意味着第一个代码在语法上也正确,并且在语义上与第二个代码相同?

    就像在基本集合论的意义上,

    • HTML,XML和XHTML都是SGML的不同子集吗?
    • XML和HTML几乎不相交?
    • XHTML是XML和HTML的超集吗?
  3. 我可以期望对以上四个方面的目的和/或何时使用哪个方面的差异进行更简洁明了的总结吗?我对它们的预期目的之间的明确界限感到困惑。
  4. 根据 http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html

    XML不是一种标记语言。让用户设计自己的标记语言是一种元语言。

    我想知道如何理解XML和HTML都是SGML的子集,但是HTML是一种标记语言,而XML不是一种标记语言,而是一种设计标记语言的语言。

    SGML和XHTML还是设计标记语言的元语言吗?

  5. 正如在两个链接中提到的那样,HTML是SGML的应用程序,也是SGML的子集,而XHTML是XML的应用程序。我想知道说一种语言是另一种语言的应用与说一种语言是另一种语言的子集之间有什么区别?

Answers:


8

HTML和XML都是标记语言(因此为* ML)。XML是适用于表示任意数据的通用标记语言,而HTML是仅适用于表示网页的特定标记语言。

HTML和XHTML都是SGML的子集,只是XHTML具有其他规范,因此也可以作为XML进行验证。将XML视为XHTML的有影响力的教父。

由于所有这三种语言都与SGML有这种关系,因此有很多相似之处,但是它们都被视为不同的语言。但是,定义这些语言的大部分原因是它们对SGML的限制。

  • HTML通过定义允许使用的标记列表来限制SGML。
  • XML通过不允许未封闭或空的开始和结束标记来限制SGML,并强制属性是显式的。XML还具有SGML中未发现的大量其他限制。
  • XHTML限制SGML的是HTML中的标签(带有一些排除项,例如frameset等),以及XML中的标签和实体限制。

尽管技术术语可能很难理解,但您可能会发现本文档很有帮助。http://www.w3.org/TR/NOTE-sgml-xml-971215

XML不是定义标记语言的元语言。真的,这只是SGML。XML只是一种数据格式标记语言。您引用的消息来源使用的技术术语不准确,这就是为什么它们令人困惑的原因。

目的

XML用于定义您自己的数据格式。如果您希望在两个系统之间传递数据,那么XML通常是这样做的方法。

例如,如果您需要将销售订单从网站传递到计费系统,则可以创建以下XML有效负载:

<order id="12345">
    <name>John Doe</name>
    <item id="443">Adult Diapers</item>
</order>

然后,您的网站会将那个XML发送到您的计费系统,然后可以从该XML解析数据。

XHTML和HTML显然仅用于网页。XHTML的主要目的是消除我们在前几年(数十年)的Web开发中所产生的许多歧义。早在90年代末期开始时,我们就使用HTML 3.2,该代码允许使用草率的代码。HTML 4+和XHTML试图通过强烈建议或强制使用显式的结束标记,显式属性和不允许的标记来对此进行补救,这在浏览器和人类上都更加容易,并且避免了跨浏览器行为的意外差异。


谢谢!(1)XHTML的HTML和XML子集都是吗?(2)既不是HTML也不是XML的子集,也不是XML不是HTML的子集是正确的吗?HTML和XML是否具有非空的交集或彼此完全分开?
全部

(3)说一种语言是另一种语言的应用与说一种语言是另一种语言的子集有什么区别?
全部

有些文档同时符合XML和HTML。有些文档符合XML而不是HTML,有些文档符合HTML而不是XML。因此,它们都不是另一个子集,但是它们具有非空交集。
Michael Kay

@Tim:(1)HTML,XML和XHTML不是SGML以外的任何子集。它们都是不同的。XML实际上与HTML或XHTML几乎没有任何关系……它具有不同的用途。XHTML既可以解析为HTML也可以解析为XML,但是只有浏览器才能将其用作HTML标记。HTML和XML都是SGML的共同祖先,但在其他方面则无关。对于每种意图,它们都是独立的,因为SGML非常通用。
乔丹

老实说,我认为您正在深入探讨应用程序和子集的术语。我认为这些术语没有区别,或者如果存在区别,我怀疑是否已经广泛同意。可以说XHTML借鉴了XML的概念,并被用作HTML的严格子集。HTML是第一位的。XHTML随后出现了。
乔丹

6

我首先要说XML是SGML的子集,然后XHTML是XML的子集。

HTML基于SGML,但具有一些不同的规则。XHTML基本上是HTML的更新版本,但是放置了一些规则,因此它也是正确的XML。

有关HTML 5 Standard如何与其他规范一起使用的一些说明。 http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifications

我不确定SGML和XML之间的区别,也不确定何时使用它们。尽管XML似乎是常用的一种。

对于XHTML和HTML,最好始终使用XHTML。错误更容易发现,而且,错误也将是有效的XML。


谢谢!(1)我想知道如何理解两个看似矛盾的事实:XML和HTML都是SGML的子集,而HTML是一种标记语言,而XML不是一种标记语言,而是一种设计标记语言的元语言?(2)根据您的答复,XHTML是XML的子集。XHTML是HTML的超集,是我帖子中的一个链接引用的“ XHTML子集HTML”。那么HTML是XML的子集吗?我不确定这是真的。
StackExchange的所有

HTML打破了太多规则,无法成为XML。我相信HTML更接近SGML。HTML的标签很松散,并且有一定数量的不同标签类型。XHTML只是HTML的XML版本。
WalterJ89 2011年

谢谢!正如在两个链接中提到的那样,HTML是SGML的应用程序,也是SGML的子集,而XHTML是XML的应用程序。我想知道说一种语言是另一种语言的应用与说一种语言是另一种语言的子集之间有什么区别?
全部

2

这些历史可能会启发您。仅仅谈论元语言,配置文件,子集和实例就有点干了!我将尝试使其简短而简单。

SGML源自GML(通用标记语言),该语言由3位IBM工程师在1960年代设计,用于存储详细的法律,政府,工业和军事文档。GML逐渐完善,直到1986年被标准化为SGML。

GML / SGML 本身不是语言。它是一种元语言,即一种用于定义一致的语言或“规则”的语言,通过该语言可以以通常一致的方式设计各种复杂文档的格式。因此,每种不同类型的文档都将定义其自己的SGML兼容标记名集以及相关属性,以及任何已定义的正式公共标识符/命名空间,模式等。因此,定义的每种格式因此成为该文档的一种独特的数据存储语言。有关类型。由于所有符合SGML规则的文档之间的一致性,因此可以编写代码以整理/处理这些文档中的数据,并在共享通用格式的文档之间传输数据。

对于大量但较小的文档,SGML过于复杂。因此,XML是在1996年至2006年之间开发的,它是SGML 的子集(单词profile实际上表示与子集相同的子集),可以处理大小文档。作为元语言的子集,XML本身就是元语言,尽管它是一种更简单的语言。您可以说XML为设计文档格式提供了基础,该文档格式既适合存储又易于在网络上的系统之间传输。

在SGML标准化之后,但在将其简化为XML之前,互联网应运而生,并且需要一种能够轻松传输和显示文档以及松散数据的文档格式。结果就是HTML语言,它是SGML的一个实例(有时称为应用程序),带有18个预定义标签,提供了一种标准化的方式来显示各种数据类型,例如文本,图像,音频等。HTML利用SGML允许一些元素可以省略开始标签或结束标签。HTML的后续版本在其中添加了新的标记和属性,并使一些现有标记和属性过时了。在HTML 5之前,对HTML进行了更改,因此它始终是SGML的子语言。

XML标准化后,出现了一个名为XHTML的实例,该实例将现有的HTML标记名称与XML在标记关闭,名称空间,模式等方面的严格要求结合在一起。XHTML最初承诺可用于存储,传输和显示数据。在HTML 5出现之前,它似乎即将取代HTML作为显示Web资料的最常用方法。HTML 5具有超出SGML中定义的某些语法功能,以便提供更丰富的数据显示,特别是对于载有多媒体的网站。随着时间的流逝,HTML 5中添加了附加功能,这些功能进一步丰富了其在数据显示/使用方面的用途,以至于至少在涉及数据显示方面,它不可能被新的XHTML版本所取代。尽管HTML和XHTML的标准是由W3C工作组制定的,这些语言在地面上的实际传播是由渐进式Web设计人员完成的,没有哪个比在媒体(广告/公关/市场营销)领域工作的渐进人员更容易了:与其他网站相比,只需看看广告代理网站的创造力即可。该行业确实采用了新的HTML 5语言,很高兴利用其功能来处理SVG,音频,视频和新的API。他们迅速采用HTML 5使其迅速在Web设计师中普遍流行,这一过程由于在YouTube和其他网站上在线交流技能和技巧而得以加速。已经出现了更新的XHTML版本XHTML5,但它实际上并不是严格的XML派生,而是XML序列化的HTML5版本。只有一小部分网站似乎对此没有用。

这就是这些数据语言背后的故事。我希望它可以帮助您区分所有含义和目的。从哲学上讲,这个故事说明了新技术(互联网)的基本启用工具(SGML)如何在需求不断变化的新环境中超越其原始限制,但在概念上变得更简单,适用性更强,影响力更大。


1

通常,在标准世界中,标准的“配置文件”是标准提供的选项的选择:例如,如果标准允许文档以UTF-8或UTF-16编码,则标准的配置文件可能需要它们将以UTF-8编码。术语“子集”具有非常相似的含义;尽管可以说术语“配置文件”略宽一些。


谢谢!(1)如我的问题的第5部分所述,“应用程序”,“子集”和“配置文件”的含义和区别如何?(2)在“ XHTML是扩展和扩展HTML子集的未来文档类型家族的基础”中,这是否意味着XHTML是HTML的子集或HTML是XHTML的子集?
全部
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.