1 历史起源

  • SGML——1986年国际标准化组织出版发布了一个信息管理方面的国际标准(ISO 8879:1986信息处理)。
  • HTML 2.0——1995年11月作为RFC 1866发布
  • XML 1.0——1998年,W3C发布了XML1.0规范,使用它来简化Internet的文档信息传输
  • XHTML 1.0——2000年成为W3C的推荐标准
  • HTML5——2014年,W3C宣布,该标准制定完成

注意:HTML 1.0在1993年6月作为互联网工程工作小组(IETF)工作草案发布,并非标准。

从上表可以看出SGML最为古老,SGML成为国际标准的接近20年之后,HTML 2.0才称为W3C的推荐标准,XML发展的最晚,SGML和HTML显然是XML的先驱。

2 SGML简介

SGML是一个用于定义标记语言的系统。为用户提供一种类似语法的机制,用于定义文档的结构和指示文档结构的标签。

每一个使用SGML定义的标记语言都被称为SGML应用。一个SGML应用通常具有以下特点:

  1. SGML声明。SGML声明指定义了应用程序中可能出现的字符和分隔符。
  2. 文档类型定义(DTD,document type definition)。DTD定义了标记构造的语法。DTD可能包含其他定义,如字符实体引用。
  3. 描述标记所表达的语义。此规范还定义了无法在DTD中表达的语法的限制。
  4. 包含数据(内容)和标记的文档实例。每个实例都包含一个对DTD的引用,用于解释它。

3 SGML与HTML

SGML与HTML有什么关系呢?HTML4以前的版本(包含HTML4)理论上是基于SGML的一个实例,因此需要在doctype中引用相关的DTD。之所以用理论上,是因为有人说HTML4以前的版本(不包含HTML4)并不严格符合SGML。

下面简单介绍一下HTML是如何使用SGML构建的。

1)元素

SGML文档类型定义声明了表示结构或所需行为的元素类型。HTML 包括表示段落、超文本链接、列表、表、图像等的元素类型。

每个元素类型声明通常描述三部分:开始标记、内容和结束标记。

元素的名称出现在开始标记(<element-name>)和结束标记(</element-name>)中。

等等。

  2)属性

元素可能具有关联的属性,它们可能具有值。属性/值对出现在元素的开始标记的">"之前。由空格分割任意数量的属性值。

等等。

3)字符引用

字符引用可能包含在 HTML 文档中的字符的数字或符号名称。它们对于引用不常见的字符或那些编写工具很难键入的字符非常有用。字符引用以"&"标记开始,以分号(;)结束。一些常见的例子如下:

    • "&lt;"代表 < 符号
    • "&gt;" 代表> 符号

4)注释

HTML注释以"<!--"开始,以"-->"结束。

以上中所有的语法均依据HTML的文档类型定义(DTD)变短。

4 SGML与XML

SGML与XML有是什么关系呢?XML是SGML的一个子集,比SGML要简单,但是能实现SGML的大部分功能。

 5 XHTML与XML

之后发展的XHTML是基于XML的一个应用,XHTML的出现是为了解决HTML语法要求松散的问题,它的语法要求更严格。

6 HTML5

如今的HTML5标准制定了两种实现语法HTML和XHTML。HTML不再基于任何特定的标记语言系统,它有自己完整的标准。XHTML是XML的一个应用。

        备注:当HTML5文档使用text/html MIME类型传输时,它将被Web浏览器是为HTML文档处理。当使用XML MIME类型,例如application/xhtml+xml传输时,它将被Web浏览器视为XML文档,由XML处理器进行分析。

参考资料

1 On SGML and HTML - W3C https://www.w3.org/TR/html4/intro/sgmltut.html

2 HTML 5.2 - W3C https://www.w3.org/TR/html5/introduction.html#html-vs-xhtml

3 标准通用标志语言 - 百度百科 https://baike.baidu.com/item/%E6%A0%87%E5%87%86%E9%80%9A%E7%94%A8%E7%BD%AE%E6%A0%87%E8%AF%AD%E8%A8%80/10471466?fr=aladdin&fromid=2901416&fromtitle=SGML

4 HTML - 百度百科 https://baike.baidu.com/item/HTML

5 可扩展标记语言 - 百度百科 https://baike.baidu.com/item/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%87%E8%AE%B0%E8%AF%AD%E8%A8%80?fromtitle=xml&fromid=86251

6 《HTML5秘籍》https://book.douban.com/subject/11610880/

SGML/HTML/XML之间的关系的更多相关文章

  1. HTML,CSS,JavaScript,json,xml之间的关系

    1.浏览器工作原理: https://blog.csdn.net/Luncles/article/details/80320082 2.HTML,XML,JSON之间的关系: https://blog ...

  2. XML配置里的Bean自动装配与Bean之间的关系

    需要在<bean>的autowire属性里指定自动装配的模式 byType(根据类型自动装配) byName(根据名称自动装配) constructor(通过构造器自动装配) 名字须与属性 ...

  3. 实体之间的关系【Entity Relationships】(EF基础系列篇9)

    Here, you will learn how entity framework manages the relationships between entities. Entity framewo ...

  4. Java Servlet与Web容器之间的关系

    自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...

  5. Java Servlet(五):GenericServlet与Servlet、HttpServlet之间的关系(jdk7+tomcat7+eclipse)

    本篇主要记录下,对GenericServlet的作用理解,及其与Servlet/HttpServlet之间的关系. 示例完成业务: 1.新建一个login.jsp页面,要求改页面能输入username ...

  6. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. servlet和web容器之间的关系

    Java是一种动态加载和运行的语言.也就是说当应用程序持有一个类的地址(CLASSPATH)和名称(包名和类名)的情况下,可以在程序运行期 间任何时候加载这个类,并创建和使用该类的对象.Servlet ...

  8. Android进阶笔记08:Android 中Activity、Window和View之间的关系

    1. Android 中Activity.Window和View之间的关系(比喻): Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutI ...

  9. Spring Bean之间的关系

    bean之间的关系:继承和依赖继承bean的配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父bean的bean称为子bean 子bean从父bean中继承配置,包括 ...

随机推荐

  1. python+mysql+flask创建一个微博应用(持续更新)

    微博应用的结构: 用户管理,包括登录管理,会话,用户角色,个人档案及用户头像. 数据库管理,包括数据库迁移处理. Web表单支持,包括字段检验和用于防止垃圾邮件的验证码功能. 大数据的分页功能. 全文 ...

  2. NanUI 0.4.4发布

    NanUI是一个基于ChromiumFX开源项目的.Net Winform界面库,ChromiumFX是Chromium Embedded Framework的.Net实现.众所周知,Chromium ...

  3. adobe acrobat x pro破解版

    adobe acrobat x pro破解版是Adobe官方出品的PDF文档全能解决方案套件. PDF文件格式是Adobe公司设计的,用其公司开发的Adobe Acrobat X Pro来创建.编辑. ...

  4. 【java设计模式】【行为模式Behavioral Pattern】策略模式Strategy Pattern

    package com.tn.策略模式; public class Client { private Strategy strategy; public void setStrategy(Strate ...

  5. 云储存第三方--阿里云OSS VS 又拍云USS

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  6. Docker Stack 集群部属服务

    Docker越来越成熟,功能也越来越强大.使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程. 环境 我是用了两 ...

  7. php面向对象4

    成员属性 基本介绍 成员属性是类的一个组成部分,一般是基本数据类型,也可以是复合类型,资源类型.比如 public $age;就是成员属性 说明 ①成员属性可以是php的任何数据类型(int, flo ...

  8. vue使用国际化

    转载请注明作者与出处 一:安装vue-i18n npm install vue-i18n --save 二:定义不同语言的json语言包 一般把它放到npm工程中的src目录下,因为这个目录是要进行编 ...

  9. 优化css选择器

    1.css选择器效率排行从高到低如下: id选择器(#head) 类选择器(.content) 标签选择器(p,h1) 相邻选择器(h1+p) 子选择器(ul < li)

  10. Create 命令详解

    mkdir:创建一个目录 /mkdir a b c :创建同级目录 /mkdir -p aa/bb/cc: 递归创建目录touch:修改文件时间戳,或者新建一个不存在的文件 /-a 更改存取时间 /m ...