目录 |
SGML是国际上定义电子文档和内容描述的标准。它源于1969年IBM公司开发的文档描述语言GML,GML主要用来解决不同系统中文档格式不同的问题。后经过多年发展,1986年经ISO批准为国际标准ISO8897,并被称为SGML。
制定SGML的基本思想是把文档的内容与样式分开。在SGML中,标记分两种:一种用来描述文档显示的样式,称为程序标记;另一种用来描述文档中语句的用途,称为描述标记。一个SGML文件通常分三个层次:结构、内容和样式。结构为组织文档的元素提供框架,内容是信息本身,样式控制内容的显示。
SGML的平台无关性、结构化、可扩展等特性,使得它使用范围很广,被许多大型公司用来创建和发布信息。
(1)它可以支持众多的文档结构类型,例如布告、技术手册、章节目录、设计规范、各种信函等;
(2)它可以创建与特定的软硬件无关的文档,因此很容易与使用不同计算机系统的用户交换文档。
SGML文件本身包含3个部分:
(1)SGML声明(SGML Declaration)。
(2)文档类型定义(Document Type Definition,DTD)。
(3)文档实例(Document Instance)。
其中,SGML声明是用来告诉SGML分析器(SGML Parser)在分析该份文件时,所使用的字符集和文件特性。文件类型定义是用来声明该份文件的结构与语法参数,不同的“文件内容”使用不同的“标记”来描述。在这里所谓“标记”(Tag)是指用一特定符号将信息内容中的某一部分加以注记,而此特定符号就称为“标记”。如“<”及“>”都是一种标记。当然标记也可以是任何一小段文字。如“<NAME>”与“</NAME>”,而“<NAME>Iamstudent</NAME>”则是一段加上标记的字串。
在SGML标记语言的术语中,“<keyword”称为起始标记,相对的,“/keyvord>”则称为结束标记。起始标记与结束标记是否一定要成对,可自行定义,而在起始标记与结束标记两者之间的文字“keyword”称为“元素”。至于文档实例,就是加上标记处理后的文件。
SGML的ISO 8879是国际标准规范,所以可信度相当高,其规范结构也相当的严谨,此外SGML已使用二十几年了,且自1996以来SGML的规范几乎是未曾变更过,所以SGML是相当成熟的一种通用性标记语言。
SGML文件可以跨平台使用,如可以在不同的计算机硬件或操作系统上被使用,甚至可以被不同的应用软件来使用,因为SGML是一种高稳定性的国际标准,加上已使用二十几年,所以支持其格式的应用软件与相关数据转换技术就多,所以SGML文件可以在各应用领域中被广泛采用,当然其可携性相对就可以提高。
制定SGML时就考虑须满足广泛的使用者,所以其规范制定得相当完整,可以满足不同应用领域使用者的需求,且与SGML搭配使用的家族如HyTime与DSSSL也都是国际标准,如HyTime符合ISO/IEC 10744的标准,主要功能是描述动态文件的一种语言,而DSSSL(Doeument Style Semantic And Specification Language)符合ISO/IEC 10179的标准,其制定目标有两个,一为制定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标准;第二层次是基础标准,如:文档样式语义与规范语言标准(DSSSL)等,是该体系的基本标准;第三层次是具体的应用标准,如:Internet上已广泛应用的HTML等标准。也就是说,在XML标准出现之前,SGML标准已经形成了完善的体系,并有许多建立于其上的应用系统与应用标准。如图所示。
在此,我们重点介绍一下居于中间层的基础标准,这些基础标准可分为三类:信息描述标准、信息表现标准和信息关联标准。
(1)信息描述标准:这一类标准是与SGML标准本身直接相关的标准,如:SGML公共标识符注册标准(ISO 9070),SGML技术报告(ISO TR 9573)、SGML一致性测试系统标准(ISO/IEC 13673)、文档处理APIs标准等等。
(2)信息表现标准:这一类标准是关于组合文档、超媒体文档的描述与处理的标准。如:文档处理框架与逻辑文档格式化、多语种字体信息、信息交换与服务等等。具体标准包括:文档样式语义与规范语言标准DSSSI,(ISO/IEC 10179)、标准页面描述语言SPDL(ISO/IEC 10180)、字体标准Fonts(ISO/IEC 9541)、字体注册标准Font Registration(ISO/IEC 10036)等等。
(3)信息关联标准:这一类标准是关于基于SGML进行信息管理与交换的标准,如:信息的链接与定位、基于时间的信息管理、知识结构与索引的表示法、交互式文档中的动作管理。具体的标准包括:超媒体/基于时间的结构化语言标准HyTime(ISO/IEC 10744)、基于主题的地图导航标准(ISO/IEC 13250)、司更改又互文档交换标准ISMID。
在这些协议中,信息表现部分最重要的标准是DSSSL(Document Style Semantics and Specification Language),信息关联部分最重要的是HyTime(Information processing-Hypermedia/Time-based Structuring Language - 2d edition)。这两个标准也是对XML标准体系中影响最为深刻的两个。其中前者是一种与平台无关的进行SGML文件处理的语言,主要包括转换语言、样式语言、表达式语言和标准文档查询语言(SDQL),XML相关标准中有很多内容是从DSSSI。中继承过来的。后者则定义了一个元素类型的集合,以便使用者可以利用这些类型,以一种标准的方式,在已有的SGML文档中提供超链及其他功能。在XML相关标准巾对此也做了继承。
SGML在其开发之初,是以作为一种规范性的标准为出发点的,因而重视详尽性,而忽视实用性成了它的致命弱点,可以这样说,SGML从来没有在网络上广泛应用过。具体而言:
第一、SGML是一个严格而完整的系统,方便软件应用并不是它的首要任务,所以SGML非常复杂,其复杂程度对于网络上的日常应用简直不可思议;
第二、SGML十分庞大,既不容易学,又不容易使用,在计算机上实现十分困难;
第三、在SGML中有许多语法语义标准,它们既不方便而且消耗昂贵,这导致开发SGML软件非常昂贵。目前比较便宜的SGML软件之一是Adobe Frame Maker,其标准版本价格为850美元,而Adobe Frame Maker+SGML是以1995美元售出的;
第四,种种不足,导致了几个主要的浏览器厂商都明确拒绝支持SGML,这无疑造成了SGML在网上传播的最大障碍。
鉴于以上因素,SGML已明显不适用于网络社会的需要,“如何使SGML能成功地运用于网络?”,这一问题已自然而然地提上了议程。1996年8月,GCA(图形通信协会)召集SGML开发者们举行了一次会议,与会者明确表示SGML在某些方面已经落伍了,这些种种不足已经成为了它广泛传播的障碍,讨论的结果认为有必要考虑怎样修补SGML。