目录
- 1介绍
- ▪其它俗称
- ▪优劣点
- ▪版本情况
- ▪观点
- 2语言特点
- 3样式
- 4文件描述
- ▪有效性
- ▪组成
- 5标记类型
- ▪描述性
- ▪程序性
- 6声明
- 7补充文件
- ▪终端变量
- ▪终端常量
- 8语法
- ▪元素语法
- ▪注释语法
- ▪其它语法特点
- 9定义
- 10标准体系
- 11相关
- ▪派生
- ▪部分相关
- ▪实际应用
>介绍
“通用标言
”是1986年
国际标准化组织出版发布的一个信息管理方面的国际标准(
ISO 8879:1986 信息处理)。ISO/
ANSI/
ECMA的一个共同标准,一种用来注释
文本文档,提供文档片断的类型信息的规范。该标准定义独立于平台和应用的文本文档的格式、索引和链接信息,为用户提供一种类似于语法的机制,用来定义文档的结构和指示文档结构的标签。其中
“标记
”的含义是指插入到文档中的标记。
标记分为两种:一种称为
“程序性的标记
”,用来描述文档显示的样式;另一种称为
“描述性标记
”,用来描述文档中的文字的用途。制定
“通用标言
”的
基本思想是
把文档的
内容与样式分开。
“通用标言
”的先驱和基础是
“IBM
通用标记语言”,
“通用标言
”是当今创建
结构化文档描述语言规则的战略集合。很多网络页面是用
超级文本标记表示出的,就是使用
“IBM通用标记语言
”概念创建文档的例子。
可扩展标记语言也根源于
“IBM通用标记语言
”。
除了“通用标言”的标准套之外,最终还将包括:“通用标言”文件交换格式、文档样式语义和规范语言、标准页面描述语言、文字描述和处理语言的一个参考模型、字体和字符信息交换标准、以及一套标准字体。
>其它俗称
标准通用置标语言、标准通用标注语言、标准通用标志语言、标准通用
标识(或
标示)语言、标准通用化标记语言。
>优劣点
优点
“通用标言
”的ISO 8879是国际标准规范,所以可信度相当高,其规范结构也相当的严谨,此外
“通用标言
”已使用二十几年了,且自1996以来
“通用标言
”的规范几乎是未曾变更过,所以
“通用标言
”是相当成熟的一种通用性标记语言。
“通用标言
”的文件可以跨平台使用,如可以在不同的计算机硬件或操作系统上被使用,甚至可以被不同的应用软件来使用,因为
“通用标言
”是一种高稳定性的
国际标准,加上已使用二十几年,所以支持其格式的应用软件与相关数据转换技术就多,所以
“通用标言
”的文件可以在各应用领域中被广泛采用,当然其可携性相对就可以提高。
制定
“通用标言
”时就考虑须满足广泛的使用者,所以其规范制定得相当完整,可以满足不同应用领域使用者的需求,且与
“通用标言
”搭配使用的家族如HyTime与文档样式语义和规范语言也都是国际标准,如HyTime符合ISO/IEC 10744的标准,主要功能是描述动态文件的一种语言,而文档样式语义和规范语言符合ISO/IEC 10179的标准,其制定目标有两个,一为制定
“通用标言
”文件显示时的样本形式,另一个是有转换语言的功能。
出版成本减少;
信息可以很容易地重用,产生一个值添加到文档(例如:印刷、超文本数据库)。
二、劣点
以上所述提到的“通用标言”有高稳定性与完整性的优点,这可使得“通用标言”可以适用在各类应用领域,但这相对的也是“通用标言”致命的缺点。
由于“通用标言”的高度完整性与稳定性,相对的其复杂性也高,这一点可以说是“通用标言”的主要缺陷,如果使用“通用标言”语法规范来制定DTD中的元素、属性与内容实体,可能需要花上数年的时间才能完全了解其中的标准,可见整个“通用标言”系统是过于完善而变成复杂。
不止
“通用标言
”本身复杂,连同要开发
“通用标言
”相关软件也变得复杂,就开发
“通用标言
”剖析器而言,用来检查
“通用标言
”文件中的控制标记与格式,使用C++(一套利用更基础的编程语言开发的
“面向对象的高级编程语言
”)来撰写都得花上几万行以上。
从
“通用标言
”的高复杂性,其相对衍生出来的就是高费用,先前也提过
“通用标言
”通常被大企业应用在大量的数据上,在
“通用标言
”被应用之前必需先制定其文件格式定义DTD,以供使用者能遵循这个DTD中定义的文件结构,但其应用的文件数据通常是复杂的,所以制定该DTD也需花长时间才能完成,所以开发能适用的DTD的费用足相当昂贵的。
其次,由于
“通用标言
”的独立性,使得通用标言在许多场合都有用武之地。同
可扩展标记语言相比,定义的功能很强大,缺点是通用标言不适用于万维网数据描述,而且
“通用标言
”的软件价格非常昂贵。
>版本情况
原始“通用标言”。
扩展的命名规则
“通用标言
”。(外语缩写:
ENR、添加扩展的命名规则以允许任意的语言和脚本标记。比如子集
可扩展标记语言使用汉语作为标签一样。)
万维网
“通用标言
”。(俗称扩展命名规则和万维网的结合、外语缩写:WebSGML、为了更好地支持
XML和WWW的要求。)
application/sgml、text/sgml、text/x-sgml、application/x-sgml;
“通用标言
”己解析的
外部实体信息文件(application/x-sgml-external-parsed-entity)
、
“通用标言
”的实体信息文件(application/x-sgml-entity)、
“通用标言
”序言部分信息文件(application/x-sgml-preamble)。
>观点
有观点建议“通用标言”的注释应如何格式化,而不是作为一种语言。
于是提出如下设计:
>语言特点
通用标言是一种描述语言的语言,通用标言定义了以电子形式表示文本的方法。它的特
点有:
正式的,能允许验证文档的正确性;
结构化的,能够处理复杂的文档;

文档的生产管理和分配的技术方案。
“通用标言”规定了在文档中嵌入描述标记的标准格式,指定了描述文档结构的标准方法,目前在万维网上使用的超级文本标记语言格式便是使用固定标签集的一种“通用标言”文档。用于“通用标言”可以支持无数的文档结构类型,并且可以创建与特定的软硬件无关的文档,因此很容易与使用不同计算机系统的用户交换文档。
>样式
“通用标言
”本身正在定义样式的设置标准,即文档样式
语义学和规范语言。
使用
“通用标言
”对多媒体的创作将带来许多好处。首先,由于其
规范性,通用标言可以使创作人员更集中于内容的创作,可提高作品的重复使用性能、可移植性能以及共享性能。
例如,可使创作人员更集中于内容的创作,可提高作品的重复使用性能、可移植性能以及共享性能等;
“通用标言
”的使用范围很广,除了传统的
电子出版物之外,
“通用标言
”还可用在其他许多场合。例如,前面介绍的
超媒体和
超文本文档、
万维网页面的制作、数据库、电子邮件、
专家系统、激光唱片-只读存储器出版物、交互式电子技术手册等方面都大有用武之地。
>文件描述
>有效性
“合乎规范”的“通用标言”文档:一个合乎规范的“通用标言”的文档必须是一个类型有效的“通用标言”的文档,一个标记有效的“通用标言”的文档,或两者。
“类型有效”:对于每一个文档实例,都有一个相关的“文档类型声明”。
“标签有效”:所有的文档实例都是完全被标记的。未必只能有一个“文档类型声明”与实例相关联。如果有一个“文档类型声明”,那实例就可以解析有或没有对它的引用。
“完全标记文档”实例:文档实例在起始标签处与一个通用的标识符,再加一个结束标记(尾标记)。
实体限制的相关定义
整体存储文档实例
自由引用文件
外部自由引用文件
>组成
一个典型的文档可被分成三个层次:文档类型结构、实例本身和样式。
“通用标言”主要是处理结构和内容之间的关系,通用标言的文档是由许多实体(“文档类型定义”加“通用标言声明”它们都为离散的文本块)来组成。
一、“通用标言”声明:定义字符集分隔符集和关键字(以下在本文里头简称“声明”)。
二、文档类型序言:定义一般实体和元素类型;包含一个“!文档类型(外语全称加缩写:
!DOCTYPE)声明”与各种“标记声明”,它们一起组成了一个文档类型定义(外语
首字母缩略词:
DTD)。
三、某实例本身:包含一个顶级元素和实例的内容。
>标记类型
>描述性
描述性标记解放了文件用于多种用途。并分为结构化描述性标记与名义上的
描述性标记。描述性结构化的标记标识文档组件和它们的逻辑关系。
>程序性
>声明
“概括语法”指定“通用标言”的标记应如何构建。
“具体语法”定义这些概括如何被编码。
“声明”里头的相关功能的开启与关闭:
用
是(YES)或
不(NO)(外语
全称:
NOt )来定义。
“声明"是由以下八部分组成:
!SGML(本关键字开始启用“声明”)。
被引用的标准版本。
文档字符集:来说明文档的字符集;(汉语名:字符集、外语全称加缩写代码:CHARSET)。
容量集:功能为限制的文件的最大长度;(汉语名:容量、外语代码:CAPACITY)。
“具体语法”的作用域:语法作用域适用于文档实例和文档序言(文档序言开头是<?或<!开头);(汉语缩写:域、外语代码:SCOPE)。
具体
语法;(汉语缩写:
语法、外语代码:SYNTAX)。
“具体
语法”其中又包含:
避而远之的字符:非法字符列表(外语全称加缩写代码:SHUNCHAR)。
“基本字符集”和“描述字符集”:说明语法中使用的字符集( 外语缩写代码:BASESET、DESCSET)。
功能:代码需要对
特殊字符的定义(汉语名:
功能、外语代码:FUNCTION)。
命名规则:定义元素、属性和实体名称时才采用(汉语名:命名、外语代码:NAMING)。
分隔符:“短引用”普通标记的分隔符列表(汉语名:分隔符、外语缩写代码:DELIM)。
保留名:在“文档类型定义”里头使用的一个保留关键字列表(汉语名:名、外语代码:NAMES)。
设置数量:设置元素或者参数的数量(汉语名:数量、外语代码:QUANTITY)。
七、特点使用:这是一项可选的特性用于修改标记,典型的特点比如“省略标签”、“短引用”等,接下文中会提到;(汉语名:特点、外语代码:FEATURES)。
八
、应用
程序特定
信息:特定于某应用程序的信息(用双引号来描述),
“通用标言
”解析器要把双引号里头的数据传递给某应用程序;(汉语缩写:
程序信息、外语全称加缩写代码:APPINFO)。
范例一:
<!SGML "版本壹"
--范例一。--
APPINFO NONE--没特定的信息。--
>
范例二:
<!SGML "ISO 8879:1986"
--范例二-- CHARSET BASESET "ISO 646:1991//CHARSET IRV//ESC 2/8 4/2" DESCSET
0 9 UNUSED 9 2 9 --制表、走行(换行)--
11 2 UNUSED 13 1 13 --回车--
14 18 UNUSED 32 95 32 127 1 UNUSED CAPACITY SGMLREF TOTALCAP 35000 ENTCAP 35000 ENTCHCAP 35000 ELEMCAP 35000 GRPCAP 35000 EXGRPCAP 35000 EXNMCAP 35000 ATTCAP 35000 ATTCHCAP 35000 AVGRPCAP 35000 NOTCAP 35000 NOTCHCAP 35000 IDCAP 35000 IDREFCAP 35000 MAPCAP 35000 LKSETCAP 35000 LKNMCAP 35000 SCOPE DOCUMENT SYNTAX SHUNCHAR NONE BASESET "ISO 646:1991//CHARSET IRV//ESC 2/8 4/2" DESCSET 0 128 0 FUNCTION RE 13 --回车-- RS 10 --走行(换行)-- SPACE 32 --空间-- TAB SEPCHAR 9 --制表-- NAMING LCNMCHAR "-." UCNMCHAR "-." NAMECASE GENERAL YES ENTITY NO DELIM GENERAL SGMLREF MDO "<!" --各种自定义代码和对应的实体。-- MDC ">" DSO "[" DSC "]" MSC "]]" COM "--" RNI "#" LIT """ LITA "'" GRPO "(" GRPC ")" AND "&" OR "|" SEQ "," OPT "?" REP "*" PLUS "+" MINUS "-" CRO "&#" ERO "&" PERO "%" REFC ";" 处指 "<?" -- 处理指令开始处。 -- PIC ">" STAGO "<" ETAGO "</" TAGC ">" NET "/" 赋值标记 "=" SHORTREF NONE "&#TAB;" "&#RE;" "&#RS;" "&#RS;B" "&#RS;&#RE;" "&#RS;B&#RE;" "B&#RE;" "&#SPACE;" "BB" """ "#" "%" "'" "(" ")" "*" "+" "," "-" "--" ":" ";" "=" "@" "[" "]" "^" "_" "{" "|" "}" "~" NAMES SGMLREF -- DOCTYPE ELEMENT ANY CDATA (*) RCDATA (*) PCDATA EMPTY (*) O ATTLIST ID IDREF IDREFS ENTITY (*) ENTITIES NOTATION (*) NAME NAMES NMTOKEN NMTOKENS NUTOKEN NUTOKENS NUMBER NUMBERS CDATA (*) FIXED CONREF CURRENT REQUIRED IMPLIED (*) ENTITY (*) DEFAULT STARTTAG ENDTAG MD MS PI CDATA (*) SDATA NDATA SUBDOC SYSTEM PUBLIC (已经标记的部分关键字) CDATA (*) RCDATA (*) IGNORE INCLUDE TEMP NOTATION (*) SHORTREF USEMAP EMPTY (*) LINKTYPE SIMPLE IMPLIED (*) LINK INITIAL IDLINK USELINK RESTORE EMPTY (*) POSTLINK (已经命名的字符实体引用) RE RS SPACE -- QUANTITY SGMLREF NAMELEN 8 LITLEN 240 PILEN 240 TAGLEN 960 ATTSPLEN 960 TAGLVL 24 ENTLVL 16 ATTCNT 40 GRPCNT 32 GRPGTCNT 96 GRPLVL 16 BSEQLEN 960 FEATURES MINIMIZE DATATAG NO OMITTAG YES RANK NO SHORTTAG YES LINK SIMPLE NO --“是”需要数目-- IMPLICIT NO EXPLICIT NO --“是”需要数目-- OTHER CONCUR NO SUBDOC NO --“是”需要数目-- FORMAL YES APPINFO NONE --没特定的程序信息。-->
>补充文件
“补充文件
”是指
“通用标言
”的
“头信息
”,优先使用外部的
“通用标言
”标记放在一个辅助输出文件;就像AMD的计算机
中央处理器里头的任务优先级寄存器八号控制寄存器(外语
首字母缩略词:CR8)来传递参数时优先使用
外部中断。
>终端变量
语法:(和现代众多操作系统都在使用的核心模式、从硬件上支持了虚拟内存储管理和多任务的计算机中央
处理器模式、保护
“其他
”程序段的模式保护模式中的内存储器空间分段边界单位
颗粒度标记类似,指明
数量,确定数量内容及多与少。)
变量名[生产数量]{定位器}{定位器}
>终端常量
和上述“终端变量”使用同样的制式,其作用基本等同。
>语法
>元素语法
实际例子:
<!DOCTYPE 百度百科词条
PUBLIC "-//百度百科//DTD 百度百科词条内的示范范例//ZH">
<元素 类型="例子">
正文具体内容
<附属元素>附属元素里头的具体内容</附属元素>
正文具体内容
</元素>
以下必须启用“声明”里头的相关功能。如果在有些版本的
“通用标言
”里头没有相关的
功能命令(比如没有“短引用”),那么就不能实现文中所提到的短引用。
短引用(引用短实体分隔符)标签可以被替换为定界符字符串。
“短引用”外语全称加缩写代码:(SHORTREF)。
例如在Creole里头它就是借用了
“短引用
”的概念,它里头的标题开始标签和标题结束标签都是(==)、加粗标签都是(**)。
实际例子:
<!DOCTYPE 百度百科词条
PUBLIC "-//百度百科//DTD 百度百科词条内的示范范例//ZH">
<元素
类型=示例>
逢二进一<附属元素> => RTN</>
</元素>
一个特点:“自以为是的空标签”。 例如空结束标记</>在<元素><附属元素>逢二进一</></元素>里头。“继承”它的值是从最近的完整开始标记起。在本例中,是<附属元素>(也可以说它会关闭离它最近打开的项目)。这样的表达是等价于<元素><附属元素>逢二进一</附属元素></元素>。外语代码:(SHORTTAG)。
实际例子:
<百度百科词条>
<表示法/公开/
</百度百科词条>
它的结构相当于
<百度百科词条>
<表示法>公开</表示法>
</百度百科词条>
外语缩写:(NET)。
如果要利用此功能要将
“声明
”里头的
“省略标签”处于
“是”的打开状态。外语代码(全部):OMITTAG YES;当然再结合文档类型定义里头的“
!元素”表示开始或结束标签是不是允许被忽略(- -、- O、O O)。“连字符”指示标记是必需的存在的、
外国语O大写或小写均可。直译为中文(- 略、- -、略 略)。而且目标元素在文档类型定义里没带(#必要)外国语#REQUIRED属性(该属性表示在文档实例中必须为目标元素的属性提供一个值)所以综合上述被定义的标签可以明确上下文。
将文件类型定义里头写如下:
<!DOCTYPE 省略部分示范例子
PUBLIC "-//百度百科//DTD 百度百科词条内的示范范例//ZH"
[
<!ELEMENT 主要说明 - - (小标题, 标记+)>
<!ELEMENT 小标题 o o (#PCDATA) --已解析的字符数据-->
<!ELEMENT 标记 - o (其他内容弌*)>
<!ELEMENT 其他内容弌 - O (#PCDATA) --已解析的字符数据-->
]
>
<主要说明>
<!--小标题前后项已经被上述规则躲避。-->
<标记>盖章打标记
<标记>盖章打标记
<其他内容弌>……
</主要说明>
注意,若像这样:
<!ELEMENT 标记 - o EMPTY>
加个与
“省略标签”不相关的
“空”(外语代码:EMPTY)时(其声明它的内容是
“空”的),而且结束标记被忽略,那么在
“通用标言
”里头此句话就是一条无效标记。在这方面语法不同于
可扩展标记语言里头的“
空”元素。
>注释语法
以下一、二、注释的效果同高级编程语言C语言注释一样,利用开始标记/*和结束标记*/来进行多行注释。
<!--该注释内容可以放在一个文档的任何地方。-->
使用
“注释
”声明。放在标记里头:<!
关键词 各种参数 --
注释内容可以放在标记里头的。--
各种参数 >
比如:
<!DOCTYPE 百度百科_注释示范范例
PUBLIC "-//百度百科//DTD 百度百科词条内的示范范例//ZH"
[
<!--文档类型定义实际上并非非常重要的-->
<!ELEMENT 文档 - - (前面, 体)>
<!ATTLIST 文档 标识符 ID #REQUIRED>
<!ELEMENT 前面 - - (标题) --前面是元信息-->
<!ELEMENT 标题 - - (#PCDATA)--被解析的字符数据-->
<!ELEMENT 体 - - (段+)>
<!ELEMENT 段 - - (#PCDATA)--被解析的字符数据-->
]
>
<文档
标识符="百度百科示范例子">
<前面>
<标题>范例标题<!-- 一个范例文件的示范标题--></标题>
<体>
<段>忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。</段>
<段>其中往来种作,男女衣着,悉如外人。</段>
<段>林尽水源,便得一山,山有小口,仿佛若有光。</段>
</体>
</文档>
三、空注释,建设<!>是被忽略的,可用于各种不同的目的
(比如机器指令中无或隐含操作数的
零地址指令用于其它的目的)。
>其它语法特点
“短标记”、“空结束标记启用(外语全称加缩写:NETENABL)”、“即时空结束标记(外语全称加缩写:IMMEDNET)”,特性允许缩短标签但需围绕一个空的文本值,但禁止缩短完整的标签:
<表示法></表示法>可以写为:<表示法//
其中,第一个斜杠代表“空结束标记启用的关闭开始标记”;第二个斜杠代表空结束标记。
注意:
可扩展标记语言定义“空结束标记启用的
关闭开始标记”需带一个
/(左斜杠),“空结束标记”需带一个
>(尖括号)。因此同等的结构在可扩展标记语言里头则显示为<表示法/>。
文本在同一行之上:
允许一个标记项目不需尾标记在行结束(特别适用于标题等)。当然需要最小化标签无论是“短引用”或“数据标记”。
然后第三个特征是,在同一行上的文本: 要么使用“短引用”(
外国语缩写代码SHORTREF)或“数据标签”(外语代码DATATAG)来达到最小化的目的:
<!ELEMENT 多行 (排*)
<!ELEMENT 排 O - (#PCDATA)--被解析的字符数据-->
<!ENTITY 行标签 "</排>">
<!SHORTREF 一行 "&#引;&#短;" 行标签>
<!USEMAP 一行 排>
在具体的的语法里头,&#引;&#短;是一个“短参考”分隔符。
<多行>
第一行
第二行
</多行>
等同于:
<多行>
<排>第一行</排>
<排>第二行</排>
</多行>
标记文档时使用多个“并发”(缩写外语代码CONCUR、外语全称:CONCURrent)的文档类型定义。
“嵌入文件”在编码时使用一个备选文档结构(汉语名:子文档、缩写外语代码SUBDOC、外语全称:SUBDOCuments)。
在不同的文档类型定义里头创建自动可处理的链接之间的结构(汉语名:链接、外语全称代码:LINK;其下还包含:“简单链接”、“显式链接”、“隐式链接”)。
>定义
基文档元素
基础文件类型
>标准体系
第一层次是元语言标准——“通用标言”标准;
第二层次是
基础标准,如:文档样式语义与规范语言标准(外语首字母缩写词:DSSSL)等,是该体系的基本标准;
第三层次是具体应用标准,如:
超文本标记语言等标准。也就是说,在
可扩展标记语言标准出现之前,
“通用标言
”标准已经形成了完善的体系,并有许多建立于其上的应用系统与应用标准。如下图所示。
>相关
>派生
可扩展标记语言(很多文件使用它来描述,它是一种使用
“通用标言
”原理的数据描述语言、与
“通用标言
”相比,它的规范不到
“通用标言
”规范的十分之一,相当于
“通用标言
”的浓缩方式。)
>部分相关
和
“通用标言
”部分相关其他的不能解析或验证,例如用于排版和文档写作的Z格式标记语言
;
标签为原始标记类型,例如Scala程序设计语言。
>实际应用
以下简要说明“通用标言”的结构化信息处理与数据交换在一般行业的应用:
超级媒体时基结构化语言(外语全称加缩写:HyTime);
在出版界美国出版商协会(外语
首字母缩略词:AAP)主持了
“Electronic Manuscript Project
”,该计划按
“通用标言
”的格式处理电子文献,设计了三种不同的文档类型定义,即文章、图书和连续出版物;
在政府领域里头,
“计算机辅助采购和后勤支持
”是美国国防部实施的计划、美国
国税局的IRS文件;
在学术界和研究团体,“文本编码方案”以“通用标言”为基础来发展出一系列的文献类型以及编码方法;
有人为美国国会图书馆机读目录通信格式(外语首字母缩略词:USMARC)设计了专用的文档类型定义,使用“通用标言”的形式描述“机读目录”记录;
交互式文档的图元文件;
超级-G文本格式;
ISO 12083;
IBM信息开发文档类型;
EWS-MAJOUR;
FOSIs and DTDs related to MIL-STD-2167A;
美国证券交易委员会的EDGAR数据库报表系统;
格式化输出规格的实例;
主题导航地图;
政府信息搜索技术(加拿大)(外语:Government Information Finder Technology);
英国电子政务互操作框架;
“美国航空运输协会”(外语:Air Transport Association of America)的文档类型定义;
牛津英语词典(第二版牛津英语词典的电子版基于
“通用标言
”)。