XML是可扩展标记语言,是SGML语言的一个子集。
它是一种元标记语言。
与HTML相比,不仅可以描述文档外观,而且可以描述文档的内容和结构。
它本身就是一种文本格式。
它主要有两种应用:一个是用来表述底层数据,如配置文件;一个是用来为文档添加元数据。
计算机如何存取数据?
计算机中的数据文件分为两大类:二进制文件和文本文件。
二进制文件只能在某些特定的程序中读取和建立,因为它本身就是个比特流,只有创建二进制文件的应用程序才会理解比特流的含义。
例如,Word创建的以.doc为扩展名的文档就是一种二进制文件。该文档中的所有信息都需要用二进制代码(元数据)来表示。
一个字处理程序生成的文档不一定能够被另一种字处理程序读取,因为设计这些程序的开发人员有自己的格式定义数据文件(当然现在的大多数字处理程序都带有自动转换功能)。
二进制文件有许多优点:计算机容易理解,处理速度快,存储效率高。缺点:无法在一个应用程序(不单指字处理程序)里打开另一个应用程序生成的二进制文件,而且同一个应用程序在不同的平台上可能会有兼容的问题。
文本文件也是比特流,但是它是以一种标准的格式(当然所谓的标准格式也有很多)组织起来的,它们总是组成一个个数,每个数再映射成字符。这种文件的优点是它更容易共享,因此促进了Internet的普及。但也有缺点,它不能保存元数据,而且文件所占用的空间比较大。
使用底层数据流表示字符的方式被称为文件的编码方式。一个文件采用何种编码可从文件的前几个字节中得知,所以应用程序会在打开这个文件时检查这几个字节,并通过它们来确定显示和操作数据的方式。如果前面的几个字节为空,则应用程序会采用默认的字符集来解读文件。
例如,将一个Word生成的文档转换成文本格式后,它就不带其他任何附加功能,而只能纯文本的形式显示。
为了将文本文件的通用性与二进制文件的存储效率和丰富的存储格式结合起来,SGML(标准通用标记语言)便诞生了。它是一种基于文本格式的语言,按一种自描述的方式标记数据。
HTML以SGML为基础,它可以用于信息显示和不同信息媒体之间的链接。但它有个局限性,它只能用于在浏览器中显示文档。我们没有办法从该文档中推断出哪些内容表示具体的显示内容是什么,它只能用于对外显示信息而无法描述自身的信息。因为HTML中的标签只是告诉浏览器如何显示标签之间内容,并没有提供与标签之间的内容有关的信息。
XML也以SGML为基础,它与SGML完全兼容。它以把数据结构化为目标,使开发人员可以根据数据的结构访问数据。
程序员一直以来用不同的方法构建自己的数据,每种新的数据构建方法必须得有新的数据读取方法,然而这些所谓的新的数据读取方法必须经过许多实验和测试才可能保证其有效性。为了简化开发中的繁琐,XML为我们读取数据提供了一个标准的方法,而不用担心些数据如何构建。
XML解析器:
为什么我们可以通过XML就能很容易地获取数据?这是因为存在一些称之为解析器的程序可以理解XML语法并帮我们读取信息。正因为有了解析器,我们就不用在应用程序中来直接处理XML了,直接把它交给XML解析器来处理。
解析器在解析XML时不需要知道数据在文件中存放的位置,它只需要一些标签就能根据要求处理标签之中的数据。
正如任何HTML文档可以在任何Web浏览器上显示一样,任何XML文档也可以由任何XML解析器读取。
关于“可扩展”:
由于我们完全控制XML文档的创建方法,可以按任意方式组织数据,因此,对于特定的应用程序,相应的XML会有特定的意义。而可扩展的意思,就是任何人可以按任何方式用XML标记数据。而HTML则不同,我们不能增加HTML的语汇,我们必须使用HTML规范中规定的标签。
由于XML的灵活性,我们在开发中可以建立自己的词汇,但如果使用一种通用的格式,我们生成的软件直接与其它软件相兼容的可能性会更大。
HTML和XML的综述:
HTML用于信息表示,而XML用于信息交换。它们的功用都是有一定的代价的。HTML在几乎所有的Web浏览器中都可以显示,但这一“所有”是建立在牺牲HTML文档的布局精确性和更好的显示效果上的。同样的,XML为了使数据格式具备更好的通用性和灵活性,XML开发者不得不放弃可以减小XML文件大小的某专用格式。
HTML是为某个专用程序设计的,它把信息通过Web浏览器传递给人们。,而XML本身就具有良好的通用性。
若在实际运行中某些网页在一个浏览器中正常显示而在另一个浏览器中无法显示,大多数情况下都是由于该网页使用了一些非标准的HTML标签所致。
任何一个XML解析器都可以读取任何XML文档中的信息,但读取了信息不代表应用程序就能理解该信息的实质含义。
XML的组成:
只定义一个规范就想囊括XML中所有的关于组织信息的技术是不可能的,基于这个理由,几个相关的规范和推荐标准共同组成了XML的全部技术。
它们有:
- XML1.0是最底层的推荐标准,XML标准系列都是建立在它之上的。它规定了XML文档必须遵从的语法、解析器必须遵循的规则等等。此外,它还定义了文档类型定义(DTD)。
- 由于我们可以建立自己的文档结构和元素名称,因此DTD和schema为我们提供了定义文档类型的方法。
- 名称空间使得一个XML词汇有别于另一个XML词汇。有了名称空间,我们可以把多个词汇组织到一个文档类型里。
- XPath是一个查询语言,它提供了寻址XML文档中某部分内容的功能。应用程序可以通过它读取XML文档中某部分内容而不必读取整个文档。
- 对于XML文档中内容的显示,我们可以用CSS和XSL来完成。
- 一个XML解析器不一定能够识别一个HTML文档,因为XML具有更严格的语法。为些,出现了XHTML。它是HTML的XML版。
- XQuery推荐标准可以帮助我们直接从Web上的XML文档查询数据。
- DOM的作用是希望以前的应用程序能够访问XML文档。