17.1 认识XML
在论坛上可能经常听说XML,但现实生活中却很少看到XML,那XML具体是什么样子的呢?本节来揭晓答案。
17.1.1 什么是XML
XML是eXtensible Markup Language的缩写,其中文含义是扩展标记语言。就像本书最开始介绍的HTML一样,XML也是一种标记语言。但它不仅仅是一种标记语言,更深层面地讲,它是一种存储数据的格式。XML使用一系列简单的标记描述数据,而这些标记可以方便地建立。虽然XML占用的空间比二进制数据更多,但XML极其简单并且易于掌握和使用。XML没有定义保存什么数据,也没有定义数据的格式,它只是定义了标记和这些标记的属性。
说明 和HTML一样,XML(可扩展标识语言)是通用标识语言标准(SGML)的一个子集,它是用来描述网络上数据内容和结构的标准。尽管如此,XML不象HTML仅仅提供了在页面上显示信息的通用方法,而且对数据赋予上下文相关的功能和动态功能。它继承了SGML的大部分功能,却使用了不太复杂的技术。
17.1.2 XML的结构
由XML语言和数据组成的文档叫做XML文档,如下代码所示为一个格式良好的XML文档。
<books> <book> <title>Learning Python</title> <author>Tom</author> </book> <book> <title>Learning XML</title> <author>Jack</author> </book> </books>
这段XML文档和HTML文档有几分相似之处,也是由处在<>之间的标签构成,但细心的读者已经发现,这些标签不再像HTML文档中那样代表数据的显示格式,而是对于某种图书信息数据的语意解释。这就是说,XML标签通常都是用户自己根据数据的实际意义定义的。
注意 XML和HTML有一些不同,XML用来描述数据,并关注数据是什么;而HTML用来显示数据,它关注的是如何使数据显示出来。XML并不是作为HTML的替代品而出现的,它们有各自的价值和应用领域。
这样结构化数据的处理方式,计算机很容易接受。XML的简单使其易于在任何应用程序中读写数据,这也使得XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其他数据交换格式,但不久之后它们都将支持XML,这就意味着应用程序可以更容易与Windows、Mac OS、Linux/UNIX以及其他平台下产生的信息结合,然后可以很容易加载XML数据到应用程序中并加以分析,并以XML格式输出结果。
虽然XML可以用来存储数据,但它与Access、Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如数据索引、排序、查找、相关一致性等。而XML仅仅是展示数据。
说明 XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成。因为XML是个公共格式,它不专属于任何一家公司,因此不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。
17.1.3 XML、HTML、SGML之间的关系和区别
XML和HTML都来自于SGML,都含有标记,有着相似的语法。HTML和XML的最大区别在于HTML是一个定型的标记语言,用固有的标记来描述,显示网页内容,比如<H1>表示首行标题,有固定的尺寸;相对的,XML没有固定的标记,XML不能描述网页具体的外观、内容,它只是描述内容的数据形式和结构。
这是一个质的区别——网页将数据和显示混在一起,而XML则将数据和显示分开来。正是这种区别使得XML在网络应用和信息共享上方便,高效,可扩展。所以我们相信,XML作为一种先进的数据处理方法,将使网络跨越到一个新的境界。
17.1.4 建立一个简单的XML文件
在本节中,读者可以使用最上手的文本编辑器编辑一个完整的XML文档,这个XML文档用来描述图书信息的一些数据,如书名、作者、价格和出版社等。使用XML来描述图书的这些数据,将会使这些信息更加清晰、易读。代码17-1就是所要建立的XML文档的完整代码,读者可以在文本编辑器中输入代码,然后按后缀名.xml保存,本书保存名为17-1.xml。
代码17-1 描述图书信息的完整XML文档17-1.xml
01 <?xml version="1.0" encoding="GB2312"?> 02 <books> 03 <book> 04 <title>Learning PHP5</title> 05 <author>David</author> 06 <publisher>White Water Press</publisher> 07 <price>29.90</price> 08 </book> 09 <book> 10 <title>Learning XML</title> 11 <author>Jeffson</author> 12 <publisher>White Water Press</publisher> 13 <price>50.79</price> 14 </book> 15 <book> 16 <title>Using PERL</title> 17 <author>Lucas</author> 18 <publisher>White Water Press</publisher> 19 <price>17.00</price> 20 </book> 21 <book> 22 <title>Windows Networks</title> 23 <author>Paul</author> 24 <publisher>White Water Press</publisher> 25 <price>32.99</price> 26 </book> 27 <book> 28 <title>Fly Leaf</title> 29 <author>Jenny</author> 30 <publisher>White Water Press</publisher> 31 <price>19.50</price> 32 </book> 33 </books>
【代码解析】这段XML代码实际上使用标签描述了5本书的各项信息,每项信息的标签就由这项信息的实际含义命名。例如用来描述作者的标签就使用<author></author>,描述价格的标签是<price></price>。而描述整本书的标签就是<book></book>,每本图书的详细信息就包含在<book></book>之内。很明显,描述所有图书的标签就非<books></books>莫属了。
从这个示例XML文件可以看出,一个XML文件的最基本构成包括XML声明和XML属性。
代码17-1中第1行是XML声明,其余都是各个元素。使用IE等浏览器可以打开该17-1.xml,看看其显示效果。图17-1所示就是17-1.xml在IE中浏览的效果图。
从中可以看出一个结构很清晰的数据描述信息。在该页面的最左侧有红色短横线(即减号),单击即可以收起该层元素,如图17-2所示。
图17-1 使用IE查看XML文档
图17-2 IE中收起一些标签的XML文档
从图17-2可以看到,前3个“book”元素均被收起,后两个元素展开,这样读者可以进一步清楚地看到XML文档的良好结构。收起后的标签前有一个“+”号,表示这个标签内嵌套着其他元素,该标签可以打开。图17-3所示是这个XML文档所描述数据的树形结构图,它更清晰地展示了代码17-1所示的XML文档的结构。
图17-3 XML文档数据的树形结构图
事实上,XML构成部分还有一项是处理指示,它是可选的,本章将在17.2.5对它简要介绍。
通常,用XML定义的标记语言可以根据标记描述的侧重点不同分为两大类,一类偏重于语意描述,例如上述例子;还有一类偏重于显示方式的描述,像现在已经出炉的XHTML等。值得一提的是,这里对于显示方式的描述不仅限于对文本的描述,还可以包括矢量图形、图像、声音。比如一个形如<EMPHASIZE>的标签在描述文本时可能是要求将文本加粗,而在描述声音时则要求将音量加大。本书侧重介绍第一类情况,有兴趣的读者可以了解一下第二类情况。
共有条评论 网友评论