4.6.5 XML的显示
XML是一种计算机程序间交换原始数据的简单而标准的方法,它采用树状格式组织数据,将数据内容和显示格式分离,因此单纯的XML文本并不太容易被人们阅读。
【例4-41】用XML文档描述购物车信息示例。
将该文档在IE中打开时,显示效果如图4-32所示。
在浏览器窗口中以树状的形式来显示XML文件,与我们在平常的网站上看到的形式大不相同,这是因为XML中存储的是格式化数据的信息,并没有数据显示方式的信息。
为了使数据便于人们的阅读和理解,需要将信息显示或者打印出来,通常完成XML显示功能的包括CSS和XSL。
CSS是一种描述由标记语言撰写的文档的显示外观的样式语言,它定义了如字体、颜色、位置等样式,用于格式化显示页面布局和外观,并能对排版进行精确控制。XML文档可以通过CSS达到页面美观的要求。
图4-32 运行结果
但由于CSS本身是为HTML设计的,在处理结构复杂的XML文本时具有局限性。因此W3C针对XML设计了一种样式语言,即XSL。它遵循XML规范、符合XML语法规则,在样式设计上比CSS的功能更强大、灵活,例如可以将数据变成一个HTML文件或PDF文件等。
XSL主要由3部分组成:第1部分是数据转换语言(XSLT,XSL Transformations),是用于转换XML文档的语言,将XML文档从一种格式转换为另一种格式,得到的文档可以是HTML、XHTML或任何其他基于文本的文档。目前XSLT最主要的功能是将XML转换为HTML显示在客户端。第2部分是数据格式化语言(XSL-FO,XSL Formation Object),它是用于格式化XML文档的语言,定义格式化命令,配合屏幕显示要求精确地设置文档外观。目前XSL-FO的发展不太成熟,浏览器相应的支持较少。第3部分是寻址语言(Xpath),它是描述节点位置的语言,在使用XSLT对XML文档进行转换时,针对XML树状结构的节点进行操作,常常需要结合Xpath对节点进行寻址。
以下通过一个例子说明如何使用XSL将XML文档转换为HTML文档进行显示。首先在文档中加入处理指令说明显示信息,如【例4-42】所示。
【例4-42】引用外部样式表的XML文档示例。
与前面一个文档相比,此文档中多出了一句?xml-stylesheet type=“text/xsl”href=“shopping.xsl”?,这句代码的含义是此XML文档的显示方式参考shopping.xsl转换文件的定义。
接下来,定义一个shopping.xsl文档,如【例4-43】所示。
【例4-43】定义shopping.xsl文档。
在该文档中,使用的语法与HTML非常相似,不同的是,里面有一些是XSL的语法。其中的几条解释如下。
xsl:template match=“/”:表示从XML文档shopping.xml的根节点开始遍历整个文档的内容,根据后续的代码提取XML文档中的相关内容。
xsl:for-each select=“shoppingCart/item”:XML文档shopping.xml中有一个根元素shoppingCart,其下面有2个子元素item,该语句的意思是对于每个item元素,均执行后续的操作。包含在xsl:for-each和/xsl:for-each之间的内容类似一个循环体。在本例中被执行了2次。其中使用“/”定位节点路径则是Xpath提供的寻址方式。
xsl:value-of select=“item No”/:提取元素item No中的文本。
将shopping.xml用浏览器打开,其显示效果如图4-33所示。
图4-33 运行结果
与图4-32的显示效果相比较可以看出,同样内容的一个XML文档,本例中由于借助了XSL的显示定义,把XML文档转换成HTML文档,使XML文档用一种更直观易懂的方式来展现数据的内容。由上面的分析可知,XSL实际上采用的是一种转换的思想,它和Xpath紧密结合,将XML文档转换为另一种可用于输出的文档。