XML文件是什么?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40849861/article/details/80458018

来源:

XML有两个先驱——SGML和HTML,这两个语言都是非常成功的置标语言,但是它们都在某些方面存在着与生俱来的缺陷。XML正是为了解决它们的不足而诞生的。
SGML的全称是标准通用置标语言,它从20世纪80年代初开始使用。正如XML一样,SGML也可用于创建成千上万的置标语言,它为语法置标提供了异常强大的工具,同时具有极好的扩展性,因此在分类和索引数据中非常有用。目前,SGML多用于科技文献和政府办公文件中。
但是,SGML非常复杂,其复杂程度对于网络上的日常应用简直不可思议。不仅如此,SGML非常昂贵。目前比较便宜的SGML软件之一是Adobe Frame Maker,其标准版本价格为850美元,而Adobe Frame Maker+SGML是以1995美元售出的。还有最关键的一点,几个主要的浏览器厂商都明确拒绝支持SGML,这无疑是SGML在网上传播遇到的最大障碍。
相反,HTML免费、简单,而且它获得了广泛的支持。HTML最初于1990年由CERN设计,它是一个非常简单的SGML语言,可以方便普通人的使用。而正如设计之初所构想的那样,HTML目前在世界范围内得到了广泛的应用。
正因为如此,1996年人们开始致力于描述一个新的置标语言,它既具有SGML的强大功能和可扩展性,同时又具有HTML的简单性。万维网联盟W3C决定专门成立一个SGML专家小组来从事此项工作,由Sun公司大名鼎鼎的Jon Bosak担任小组的指挥。
事实上,Bosak和他领导的专家小组对SGML所做的贡献就像Java研究组对C++做出的贡献一样。SGML中所有非核心的、未被使用的和含义模糊的部分都被删除,剩下的就成为短小精干的置标工具——XML。对于XML的描述只有26页,而当初SGML的描述却长达500页之多。而值得一提的是,对于XML的描述尽管篇幅只是SGML的二十分之一,但SGML中所有的精华都被保留了下来。
这以后,XML不断发展演化,并且从化学置标语言(Chemistry Markup Language,CML)和数学置标语言(Mathematical Markup Language,MathML)中汲取了大量的经验。1997年春天,可扩展链接语言( eXtensible Link Language,XLL)草案已被拟定,到了1997年夏天,微软也开始了关于频道描述格式(Channel Definition Format,CDF)的定义工作,这应该算是XML的第一个真正的应用。
最后,XML于1998年修成正果。W3C于1998年2月批准了XML的1.0版本,一个崭新而大有前途的置标语言诞生了。

优点:

XML 良好的可扩展性

在XML产生之前,要想定义一个置标语言并推广利用它非常困难。一方面,如果制定了一个新的语言而期望它能生效,需要把这个标准提交给相关的组织(如W3C),等待它接受并正式公布这个标准,经过几轮的评定和修改,到这个置标语言终于成为一个正式推荐标准时,可能已经过了几年的时间。另一方面,为了让这套标记得到广泛应用,制订者必须为它配备浏览工具。这样,就不得不去游说各个浏览器厂商接受并支持新制定的标记,或者索性自己开发一个新的浏览器去与现有的浏览器竞争,无论哪个办法,都需要耗费大量的时间和工作。现在借助XML的帮助,制定新的置标语言要简单易行得多了,这也正是XML的优势所在。
大家都知道,各个不同的行业可能会有一些独特的要求。比如说,化学家需要化学公式中的一些特殊符号,建筑家需要设计图纸中的某些特殊的标记,音乐家需要音符,这些都需要单独的标记。但是,其他网页设计者一般不会用这些记号,也不需要这些标记。XML的优点就在于它允许各个组织、个人建立适合他们自己需要的标记库,并且这个标记库可以迅速地投入使用。
不仅如此,随着当今世界越来越多元化,要想定义一套各行各业能够普遍应用的标记既困难,也没有必要。XML允许各个不同的行业根据自己独特的需要制定自己的一套标记,同时,它并不要求所有浏览器都能处理这成千上万个标记,同样也不要求置标语言的制定者制定出一个非常详尽、非常全面的语言,从而适合各个行业、各个领域的应用。比起那些追求大而全的置标语言的做法,这种具体问题具体分析的方法实际上更有助于置标语言的发展。
实际上,现在许多行业、机构都利用XML定义了自己的置标语言。比较早而且比较典型的有:化学置标语言(CML由Peter Murray-Rust制订)和数学置标语言(MathML1.0版本,W3C1998年4月7日推荐标准)。

XML 内容与形式的分离

XML不仅允许自定义一套标记,而且这些标记不必仅限于对显示格式的描述。XML允许根据各种不同的规则来制定标记,比如根据商业规则,根据数据描述甚至根据数据关系来制定标记。
仍以前面关于学生列表的文档(xuesheng.dtd)为例,对两个不同类型的文档进行一个详细的比较。之前的例子中,文档是用HTML语言写的。尽管这也是一个存储、显示数据的可行的方法,但它的效率和能力却非常有限,至少存在以下3个严重的问题。
  1. 显示方式内嵌于数据之中。在这个例子中,数据是用列表的形式来表示的,如果在某个时候决定改用表格来表示这些数据,那么将不得不重新编码所有的HTML文件,这可能意味着几十页或几百页要重写一遍。
  2. 在数据中寻找信息非常困难。假如需要从这个网页中找到所有季慧奇这个学生的信息,那么,需要编写一个脚本程序,譬如使用JavaScript,VBScript。程序应该如何编写呢?唯一可行的办法就是逐字寻找“季慧奇”这个字符串。而且即便找到了所有这些字段,也无法确定这个“季慧奇”究竟是不是学生的姓名。
  3. 数据自身的逻辑不得不让位于HTML语言规范的逻辑。如果要用JavaApplet来处理数据,则这个JavaApplet将不得不遍历整个HTML文件,把所有的HTML标记剔除掉,再把剥离出来的有用的数据重新组织。同样,任何一个不是单纯为了显示HTML文件的应用程序在处理HTML文件中的数据时,都不得不做大量额外工作。
当使用XML时,以上问题就迎刃而解了。现在的标记为要表现的数据赋予了一定的含义。用这种形式存储时,数据非常简单明晰,因为它所携带的信息不是显示上的描述,而是语义上的描述。就像后面将要看到的那样,信息的显示方式已经从信息本身中抽取出来,放在“样式单”中。这样一来,上面所说的HTML的3个问题一一得到了解决。XML内容与形式分离的3个好处如下。
  1. 在XML中,显示样式从数据文档中分离出来,放在样式单文件中。这样,如果要改动信息的表现方式,无须改动信息本身,只要改动样式单文件就够了。如果这时候把列表的数据改用表格显示,无须再去修改大量数据信息文档,因为它们和同一个样式文件相关联,只要改动这个样式单文件就可以了。
  2. 在XML中数据搜索可以简单高效地进行。搜索引擎没必要再去遍访整个XML文档,而只须找一下相关标记下的内容。也就是说,要想找“季慧奇”,只要看看<姓名>这个标记下的字符串数据是不是匹配。
  3. XML是自我描述语言。即便对于一个预先规定的标记一无所知的人,这个文档也是清晰可读的。显然,XML文档中的<学号>200120101</学号>代表了一个学生的学号,可是相应的HTML文档中的<LI>200120101</LI>就不那么清楚了。此外,信息之间的某些复杂关系,比如树状结构、继承关系等,在XML中也都得到了绝好的体现,这样就大大方便了XML的应用处理程序的开发。

其他优点

XML的良好的可扩展性及内容与形式的分离是XML最突出的优点,除此以外,XML至少还有下面三个优点。
  1. 遵循严格的语法要求前面讲过,HTML的语法要求并不严格,浏览器可以显示有文法错误的HTML文件。但XML不但要求标记配对、嵌套,而且还要求严格遵守DTD的规定。XML非常注重准确性,如果语法有丝毫差错,分析器都会停止对它的进一步处理。在处理HTML文件时,浏览器通常具备一个内置的修改功能去猜测HTML文件中漏掉了什么,并试图修改这个有误的文件。XML分析器则不同,无论这个分析器是内嵌于浏览器还是作为独立的处理器,都绝对不允许猜测和修改。就像编译一个程序一样,一个XML文档或者被判别为“正确”而被接受,或者被判别为“错误”的而不予运行。这是因为XML的宗旨在于通过非标准的标记传递结构化的数据,一个分析器无法像处理一个已有了一套固定DTD的HTML文件那样猜出文件中到底有什么,又缺什么。严格的语法要求固然表面上显得烦琐,但一个具有良好语法结构的网页文档可以提供较好的可读性和可维护性,从长远来看还是大有裨益的。这大大减轻了浏览器开发人员的负担,也提高了浏览器的时间和空间效率。以后随着XML的自动生成工具和所见即所得的编辑器的问世,XML的编写者也就不用再操心XML的源码是什么样子,更不用去想XML的一些琐碎的语法规定。当然,这对于这类XML的开发工具也就提出了比较高的要求。
  2. 便于不同系统之间信息的传输当今的计算机世界中,不同企业、不同部门中存在着许多不同的系统。操作系统有NT、Unix等,数据库系统有SQLServer,Oracle等,要想在这些不同的平台、不同的数据库系统之间传输信息,不得不使用一些特殊的软件,这样就非常不方便。而不同的显示界面,从工作站、个人计算机到手机,使这些信息的个性化显示也变得相当困难。有了XML,各种不同的系统之间可以采用XML作为交流媒介。XML不但简单易读,而且可以标记各种文字、图像甚至二进制文件,只要有XML处理工具,就可以轻松地读取并利用这些数据,这使得XML成为一种非常理想的网际语言。
  3. 具有较好的保值性XML的保值性来自它的先驱之一——SGML语言。SGML作为一套有着十几年历史的国际标准,它最初设计的一大目标就是要为文档提供50年以上的寿命。
我们是通过流传至今的大量历史文献知道祖先悠久辉煌的历史,同样,我们的后代也要靠我们留下的文字资料来了解我们。可是现在大部分资料都是电子文档的形式,而且许多没有被打印下来单独存档,而只留了几份拷贝。若干年后,我们的子孙很可能面对着这些电子文档,苦于没有软件工具能够打开。如果没有XML,恐怕只有两个办法:要么返朴归真继续使用纸介质,要么不辞劳苦随着软件的更新换代来大规模地转换原有文档到最新的格式。SGML和XML不但能够长期作为一种通用的标准,而且很容易向其他格式的文档转化,它们的设计对这一问题给出了圆满的解决方案。

 用途:


设计XML的本意是用来存储、传送和交换数据的,而不是用来显示数据的。

创建新的置标

语言作为元置标语言,XML可以为用户定义适合本行业领域的置标语言。目前这一应用的成功例子比比皆是,例如化学领域的CML,数学领域的MathML,移动通信领域的WML等。

存储数据

XML文档是带有一定语义的纯文本格式的文件,可以用来存储数据,也可以方便地编写应用程序来存储和读取存储的数据。由于XML对于硬件、软件、应用程序是独立的,因此也可以使用除标准HTML浏览器以外的其他应用程序使用XML文档数据,其他应用程序可以将XML文档作为数据源来访问,就像它们访问数据库一样,使得用XML存储的数据更为有用。XML良好的自描述性也使它成为保存历史档案,如政府文件、公文、科学研究报告等的最佳选择。

交换数据

使用XML可以将数据在不兼容的系统之间进行交换。在现实中,计算机系统和数据库所包含的数据格式不兼容。将数据转换成XML文档,就能够被不同类型的多种应用程序阅读,可以大大地降低应用的复杂性。XML也将成为在Internet上的企业之间交换金融信息的主要语言。

Web应用

由于XML是由SGML特别为Web简化的,因此XML文档将成为Web资源的重要组成部分,XML使得搜索引擎更为智能和准确。XML在Web方面的应用有如下方面。
  1. 集成不同数据源XML文档可以用来描述包含在不同应用的数据,从Web页面到数据库记录等,Web应用的中间层服务程序将这些用XML表示的数据组合起来,然后提交给客户端或者下一步的应用。XML还提供客户端包含机制,可以将多个来源的数据集成在一个文档内显示。
  2. 本地计算XML数据传输到客户端后,客户端可以利用XML分析器对数据进行解析和操作,在完成系统所需功能的同时,合理分配客户端和服务器的负荷。比如:数据库记录可以直接传输到客户端,然后再进行排序,传统的HTML就无法做到这一点。
  3. 数据的多种显示XML将内容与表现分离,XML只描述数据的结构和语义,显示外观则通过样式单文件(CSS或XSL)进行描述。因此,只需在显示时配置不同的样式单,即可实现多种显示效果。
  4. 网络出版随着互联网的发展,网络已经成为一种新的媒体,人们在网络上发布各种信息,信息的发布形式和发布语言也多种多样,其中基于XML的显示技术和显示语言发挥了重要作用。比如eBook、eNewspaper等,就利用了XML的显示语言。
  5. 支持Web应用的互操作和集成Web界面定义语言(Web Interface Definition Language,WIDL)是Web Methods公司定义的一个XML应用,它是一个能够用于Web的资源和企业应用接口的语言标准。通过它,Web应用可以自动存取Web资源和企业应用。

总结:

XML是可扩展标记语言(Extensible Markup Language,XML)缩写,
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

XML是标准通用标记语言(SGML)的子集,非常适合Web传输。

XML提供了一套跨平台,跨网络。跨程序的语言的描述方式。
使用XML可以方便的实现数据交换,系统配置,内容管理等常见的功能。

可扩展性:可定义新的标记语言。
侧重点:侧重于如何结构化的描述信息。
语法要求:xml要求嵌套,配对,遵循统一的顺序结构要求,结构清晰,便于阅读,维护。
   在应用程序中,基于DOM(文档对象模型)的xml分析器将一个xml文档转换成一个对象模型的集合(DOM树),应用程序正    式通过对这个对象模型的操作。

展开阅读全文

没有更多推荐了,返回首页