我想了解关于SGML的知识，请写一篇详细的介绍
SGML是国际上定义电子文档和内容描述的标准。它源于1969年IBM公司开发的文档描述语言GML，GML主要用来解决不同系统中文档格式不同的问题。后经过多年发展，1986年经ISO批准为国际标准ISO8897，并被称为SGML。
制定SGML的基本思想是把文档的内容与样式分开。在SGML中，标记分两种：一种用来描述文档显示的样式，称为程序标记；另一种用来描述文档中语句的用途，称为描述标记。一个SGML文件通常分三个层次：结构、内容和样式。结构为组织文档的元素提供框架，内容是信息本身，样式控制内容的显示。
SGML的平台无关性、结构化、可扩展等特性，使得它使用范围很广，被许多大型公司用来创建和发布信息。#### SGML的主要特点

(1)它可以支持众多的文档结构类型，例如布告、技术手册、章节目录、设计规范、各种信函等；
(2)它可以创建与特定的软硬件无关的文档，因此很容易与使用不同计算机系统的用户交换文档。#### SGML的构成

SGML文件本身包含3个部分：
(1)SGML声明(SGMLDeclaration)。
(2)文档类型定义(DocumentTypeDefinition，DTD)。
(3)文档实例(DocumentInstance)。
其中，SGML声明是用来告诉SGML分析器(SGMLParser)在分析该份文件时，所使用的字符集和文件特性。文件类型定义是用来声明该份文件的结构与语法参数，不同的“文件内容”使用不同的“标记”来描述。在这里所谓“标记”(Tag)是指用一特定符号将信息内容中的某一部分加以注记，而此特定符号就称为“标记”。如“＜”及“＞”都是一种标记。当然标记也可以是任何一小段文字。如“＜NAME＞”与“＜／NAME＞”，而“＜NAME＞Iamstudent＜／NAME＞”则是一段加上标记的字串。
在SGML标记语言的术语中，“＜keyword”称为起始标记，相对的，“／keyvord＞”则称为结束标记。起始标记与结束标记是否一定要成对，可自行定义，而在起始标记与结束标记两者之间的文字“keyword”称为“元素”。至于文档实例，就是加上标记处理后的文件。#### SGML的优缺点

1.SGML的优点

高稳定性

SGML的ISO8879是国际标准规范，所以可信度相当高，其规范结构也相当的严谨，此外SGML已使用二十几年了，且自1996以来SGML的规范几乎是未曾变更过，所以SGML是相当成熟的一种通用性标记语言。

高可携性

SGML文件可以跨平台使用，如可以在不同的计算机硬件或操作系统上被使用，甚至可以被不同的应用软件来使用，因为SGML是一种高稳定性的国际标准，加上已使用二十几年，所以支持其格式的应用软件与相关数据转换技术就多，所以SGML文件可以在各应用领域中被广泛采用，当然其可携性相对就可以提高。

高完整性

制定SGML时就考虑须满足广泛的使用者，所以其规范制定得相当完整，可以满足不同应用领域使用者的需求，且与SGML搭配使用的家族如HyTime与DSSSL也都是国际标准，如HyTime符合ISO／IEC10744的标准，主要功能是描述动态文件的一种语言，而DSSSL(DoeumentStyleSemanticAndSpecificationLanguage)符合ISO/IEC10179的标准，其制定目标有两个，一为制定SGML文件显示时的样本形式，另一个是有转换语言的功能。

2.SGML的缺点

上面提到SGML有高稳定性与完整性的优点，这可使得SGML可以适用在各类应用领域，但这相对的也是SGML致命的缺点。

高复杂性

由于SGML的高度完整性与稳定性，相对的其复杂性也高，这一点可以说是SGML的主要缺陷，如果使用SGML语法规范来制定DTD中的元素(Element)、属性(Attribute)与内容实体(Entity)，可能需要花上数年的时间才能完全了解其中的标准，可见整个SGML系统是过于完善而变成复杂。
不止SGML本身复杂，连同要开发SGML相关软件也变得复杂，就开发SGML剖析器而言，用来检查SGML文件中的控制标记与格式，使用C++来撰写都得发上几万行以上才行咧!

费用昂贵

从SGML的高复杂性，其相对衍生出来的就是高费用，先前也提过SGML通常被大企业应用在大量的数据上，在SGML被应用之前必需先制定其文件格式定义DTD，以供使用者能遵循这个DTD中定义的文件结构，但其应用的文件数据通常是复杂的，所以制定该DTD也需花长时间才能完成，所以开发能适用的DTD的费用足相当昂贵的。#### SGML的标准体系

SGML标准的体系可分为三个层次：第一层次是元语言标准——SGML标准；第二层次是基础标准，如：文档样式语义与规范语言标准(DSSSL)等，是该体系的基本标准；第三层次是具体的应用标准，如：Internet上已广泛应用的HTML等标准。也就是说，在XML标准出现之前，SGML标准已经形成了完善的体系，并有许多建立于其上的应用系统与应用标准。如图所示。

在此，我们重点介绍一下居于中间层的基础标准，这些基础标准可分为三类：信息描述标准、信息表现标准和信息关联标准。
(1)信息描述标准：这一类标准是与SGML标准本身直接相关的标准，如：SGML公共标识符注册标准(ISO9070)，SGML技术报告(ISOTR9573)、SGML一致性测试系统标准(ISO／IEC13673)、文档处理APIs标准等等。
(2)信息表现标准：这一类标准是关于组合文档、超媒体文档的描述与处理的标准。如：文档处理框架与逻辑文档格式化、多语种字体信息、信息交换与服务等等。具体标准包括：文档样式语义与规范语言标准DSSSI，(ISO／IEC10179)、标准页面描述语言SPDL(ISO／IEC10180)、字体标准Fonts(ISO／IEC9541)、字体注册标准FontRegistration(ISO／IEC10036)等等。
(3)信息关联标准：这一类标准是关于基于SGML进行信息管理与交换的标准，如：信息的链接与定位、基于时间的信息管理、知识结构与索引的表示法、交互式文档中的动作管理。具体的标准包括：超媒体／基于时间的结构化语言标准HyTime(ISO／IEC10744)、基于主题的地图导航标准(ISO／IEC13250)、司更改又互文档交换标准ISMID。
在这些协议中，信息表现部分最重要的标准是DSSSL(DocumentStyleSemanticsandSpecificationLanguage)，信息关联部分最重要的是HyTime(Informationprocessing-Hypermedia／Time-basedStructuringLanguage-2dedition)。这两个标准也是对XML标准体系中影响最为深刻的两个。其中前者是一种与平台无关的进行SGML文件处理的语言，主要包括转换语言、样式语言、表达式语言和标准文档查询语言(SDQL)，XML相关标准中有很多内容是从DSSSI。中继承过来的。后者则定义了一个元素类型的集合，以便使用者可以利用这些类型，以一种标准的方式，在已有的SGML文档中提供超链及其他功能。在XML相关标准巾对此也做了继承。#### SGML的现实问题

SGML在其开发之初，是以作为一种规范性的标准为出发点的，因而重视详尽性，而忽视实用性成了它的致命弱点，可以这样说，SGML从来没有在网络上广泛应用过。具体而言：
第一、SGML是一个严格而完整的系统，方便软件应用并不是它的首要任务，所以SGML非常复杂，其复杂程度对于网络上的日常应用简直不可思议；
第二、SGML十分庞大，既不容易学，又不容易使用，在计算机上实现十分困难；
第三、在SGML中有许多语法语义标准，它们既不方便而且消耗昂贵，这导致开发SGML软件非常昂贵。目前比较便宜的SGML软件之一是AdobeFrameMaker，其标准版本价格为850美元，而AdobeFrameMaker+SGML是以1995美元售出的；
第四，种种不足，导致了几个主要的浏览器厂商都明确拒绝支持SGML，这无疑造成了SGML在网上传播的最大障碍。
鉴于以上因素，SGML已明显不适用于网络社会的需要，“如何使SGML能成功地运用于网络?”，这一问题已自然而然地提上了议程。1996年8月，GCA(图形通信协会)召集SGML开发者们举行了一次会议，与会者明确表示SGML在某些方面已经落伍了，这些种种不足已经成为了它广泛传播的障碍，讨论的结果认为有必要考虑怎样修补SGML。