XML的英文全称是eXtensi-NeMauP Lananage。从学术上讲,XML是源语言,亦即制作语言的语言,通常译为可扩展标记语言。
何谓XML
关于XML曾经有过种种误解,因此将XML的特征归纳如下:
(l)XML是制作语言的语言,使用XML可以制作自己想表达的内容的语言,再用其语言作具体的表现,单纯地使用XML并无意义,但如果不是使用XML制作的语言,就无法交换信息。
(2)XML是互联网的WWW标准,其初衷基本上是在网络上使用。不过,XML是SGML的后继语言,而不是HTML的后继语言。HTML的后继语言是XHTML语言。HTML原本是用SGML写成的语言之一,将构成其基础的SGML转换成XML便是XHTML。
(3)XML有文本方面的应用和数据方面的应用之分。文本方面的应用,用户较少,在数据方面应用的人,常常不经心文本方面的应用方法。
(4)XML可以处理抽象性的信息和具体的信息。SGML基本上是处理抽象的信息,根据式样单(stylesheet)变为版面设计信息使用,即式样单语言也能以XML来表现。也就是说,抽象的信息、具体的版面信息都能用XML来表现。
(5)XML是以Unicode(二进制的国际统一文字编码)为前提,只能处理Unicode的文字。虽然可以指定看做是Unicode的子集的文字集合,但有关XML的文字定义,是在Unicode的编码范围内给定的,因此基本上可以认为只能处理Unicode的文字。
(6)XML是新世纪的纯文本(plain text)。以往总是先制出纯文本来保存,既便系统的环境不同,也能有效地传递。因此,这种纯文本作为基本信息交换手段所起到的作用,XML将延续下去。
XML相关标准的动向
不少人认为XML作为标准的主体已经足够了。若有不足之处,可以由其它的标准予以补充即可,由于这种看法已成为主流,因此至今尚无打算编制XMLZ.0的具体动向。以下来关注一下XML相关标准的动向:
(1)连接:最初作为XML用的连接语言,出现了XLink。它原来打算实现比HTML更为有力的超连接,但它最终分为XLink和XPointer,进而 XPOinter的一部分又成为XPath,变成了三种语言。目前只有XPath受到推荐。XPath是将连接语言和式样单转换语言共同使用的内容,归纳为一种标准。
(2)式样单:作为XML用的式样单,曾经开发了XSLo它包含了转换语言和格式化语言,但其后的转换语言作为XSLT(XSL转化)独立出来而得到推荐。XSLT亦能用于XSL的格式化以外的转换,例如,亦可转换HTML或SVG等语言,并认可其利用价值而首先得到推荐。另一方面,格式化语言仍旧用XSL名称,其设有得到推荐。虽然要想将其变成全世界的语言,但不是一朝一夕就能做到的,其前途末卜。
顺便提一下,SVG是在W3C(WWW国际协会)中讨论的矢量图形(vector grsphics)语言,由Adobe在illustrator等应用程序上已经开始采用了,估计不久就能推荐。尤其是在全球网上位图格式已有GIF,JPEG等标准,而矢量图形至今尚无像样的标准,所以受到人们的期待。
(3)Schema:目前最热门的话题是Schema语言。所谓XML的Schema语言,就是描述XML文件的合法范围的语言。虽然它是规定语言句法的语言,但它有力地支持XML是源语言这个特征。也就是说,使用XML来制作语言时,在其语言中已经包括了句法和意图。所说的意图,用计算机语言来写是很难的,肯定会有不易被人们理解的语言写出的部分。
对此,如果是XML的句法,一定要被限制在某一范围之内,严格地写明。这种机械性规范的语言被称作是XML的Schema语言。目前正在使用的有DTD。XMLschema、XML Data Reduced。RELAX等Schema语言。
Schema语言的必要性
需要Schema语言的背景是因为存在着计算机不如人类聪明这个根本性问题。人们遇到一般文件格式不确切时也能把内容理解下来,而计算机却没有这种容错性能,所以才有严密写明句法定义的必要。而且,只要求严密这点还不行,还要保证没有差错。能够做这点的便是Schema语言。拿电子数据来说,若只是满足人的阅读,平常用的文字处理机的格式或PDF、Postscript等就可以了,但由于计算机并不能做到无差错地予以理解,所以才有必要提升信息的抽象水平,以便让计算机理解。比如说,在发票的某处只要按规定标明,并用机械性语言来写明,才能让计算机认定这是金额的意思。
事实上,自从有了SFML以来,叫做DTD的Schema语言已经取得了实际成果。但XML出台后,它就出现了问题。例如,它不能描述姓名空间的信息。这是因为在SGML中不含有姓名空间,这点在DTD中没有安排,而在XML中给予了补偿。还有DTD不能同时处理互为独立的文本定义。比如,在一个文本中,由不同文本定义成的文件混杂一起,就不能作到妥善处理。
此外,DTD与XML的句法不同,记忆和使用都不方便,并且DTD在处理外部引用实体时会出规模棱两可等问题。而XML却能做到不涉及DTD的内容也能处理。在DTD将实体定义后,再从文本本身引用它时,只凭没有处理DTD的XML应用软件,会发生实体不能被妥善引用的情形。由于在外部实体不被引用时,会出规模棱两可的结果,因此同一文本中存在的实体必须被引用。正因为有这些问题的存在,所以用DTD作为XML的Schema语言是不太合适的。
[时间:2006-01-26 作者:丁一]