• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:24来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

由一种模式选定,该模式会考虑元素的名称和值、元素的属性名和值以及在XML 文档树状结构中的绝对和相对位置等等。数
据一经从一个元素中取出,就可以移动、复制和经过其他多种处理。在这个简要的介绍中描述了使用XML 变换部分所能做的
事情。读者将学到使用XSL 编写一些能够立即在网上看到的令人吃惊的文档。
在第14 章的“XSL 变换”中对XSL 的变换作了彻底的阐述。
5.4.2 文档的主体
请看下面的简单例子,并把它应用于清单5-1 所示的棒球统计的XML 文档中,清单5-2 是一个XSL 样式单。它提供XML 数据
将要注入的HTML“模子”。
清单5-2:一个XSL 样式单
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
XML 实用大全
第 102 页
<HEAD>
<TITLE>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<H1>Major League Baseball Statistics</H1>
<HR></HR>
Copyright 1999
<A HREF="http://www.macfaq.com/personal.html">
Elliotte Rusty Harold
</A>
<BR />
<A HREF="mailto:elharo@metalab.unc.edu">
elharo@metalab.unc.edu
</A>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
该清单像一个包含在XSL:template 元素中的HTML 文件,也就是说它的结构更像是这样:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
XML 实用大全
第 103 页
HTML file goes here
</xsl:template>
</xsl:stylesheet>
清单5-2 不仅是一个XSL 样式单,同样是一个结构完整的HTML 文档。它以一个XML 名称开始,文档的根元素是
xsl:stylesheet。该样式单包含唯一的模板,把XML 数据编码为一个xsl:template 元素。xsl:template 元素有一个match
属性,其值为/,内容是一个结构完整的HTML 文档。输出的HTML 结构完整不是一种巧合。因为HTML 首先必须是一个XSL
样式单的一部分,并且XSL 样式单是结构完整的XML 文档,因此在一个XSL 样式单中的所有HTML 一定结构完整。
Web 浏览器尽量使XML 文档各部分与每个xsl:template 元素相匹配。/模板与文档的根即整个文档本身相匹配。浏览器读
取模板并将来自XML 中的数据插入XSL 指令指明的位置。但是该特定模板不包含XSL 指令。因此它的内容只是被逐字逐句地
复制到Web 浏览器中,产生如图5-4 所示的输出结果。请注意该图不显示XML 文档的任何数据,只显示XSL 模板中的数据。
把清单5-2 中的XSL 样式单与清单5-1 中的XML 文档连接起来很方便,只需增加一个<?XML-stylesheet?>处理指令,该指令
位于XML 声明和根元素之间,含有一个值为text/xsl 的type 属性和一个指向样式单的href 属性。例如:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="5-2.xsl"?>
<SEASON YEAR="1998">
...
这与在文档上连接CSS 样式单的方法一样,唯一不同的是type 属性的值为text/xsl 而不是text/css。
图5-4 采用清单5-2 中XSL 样式单后,XML 文档中的数据而不是XSL 模板中的数据消失了
XML 实用大全
第 104 页
5.4.3 标题
图5-4 很明显丢失了数据。尽管清单5-2 中的样式单显示了一些内容(与图5-3 所示的CSS 样式单不同),但是它没有显示
XML 文档中的任何数据。要添加这些数据需要使用XSL 指令元素把XML 源文档中的数据复制到XSL 模板中。清单5-3 增加了
必要的XSL 指令,从SEASON 元素中抽取YEAR 属性并把它插入到结果文档的TITLE 和H1 标头之间。图5-5 显示了处理后的
文档。
清单5-3:一个含有抽取SEASON 元素和YEAR 属性指令的XSL 样式单
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<HTML xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<HEAD>
<TITLE>
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
Major League Baseball Statistics
</TITLE>
</HEAD>
<BODY>
<xsl:for-each select="SEASON">
<H1>
<xsl:value-of select="@YEAR"/>
Major League Baseball Statistics
</H1>
</xsl:for-each>
<HR></HR>
XML 实用大全
第 105 页
Copyright 1999
<A HREF="http://www.macfaq.com/personal.html">
Elliotte Rusty Harold
</A>
<BR />
<A HREF="mailto:elharo@metalab.unc.edu">
elharo@metalab.unc.edu
</A>
</BODY>
</HTML>
</xsl:template>
</xsl:stylesheet>
下面的新XSL 指令能够从SEASON 元素中抽取YEAR 属性。
<xsl:for-each select="SEASON">
<xsl:value-of select="@YEAR"/>
</xsl:for-each>
图5-5 清单5-1 采用清单5-3 所示的XSL 样式单后的显示结果
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(35)