• 热门标签

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

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

文档变换成客户端能够理解的XML 应用程序。尽管将来有些浏览器很可能能够处理XSL 格式化对象,但HTML 是很有希望的
选择方案。
XML 实用大全
第 454 页
将XSL 样式单与XML 文档相链接是很容易的,只需要紧跟在XML 声明之后插入序言中的xml-stylesheet 处理指令。这种处
理指令应有text/xsl 值的type 特性,以及其值为指向此样式单的URL 的href 特性。例如:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="14-2.xsl"?>
这也是将CSS 样式单与文档链接的方法。这里的唯一区别是type 特性具有text/xsl 值,而不是text/css 值。
Internet Explorer 5.0 的XSL 支持在许多方面与1999 年4 月21 日制定的草案有差异。首先,它期望XSL 元素放在
http://www.w3.org/TR/WD-xsl 命名域中,而不是http://www.w3.org/XSL/Transform/1.0 命名域,尽管xsl 前缀仍然使用。
其次,当元素不与任何模板相匹配时,并不执行此元素的缺省规则。因此,在Internet Explorer 中浏览文档时,需要从根
元素开始为分级结构中的每个元素提供一个模板。清单14-4 显示了这种情况。三条规则依次与根节点、根元素
PERIODIC_TABLE 和ATOM 相匹配。图14-3 显示的是使用此样式单将清单14-1 加载到Internet Explorer 5.0 中之后的XML
文档。
清单14-4:将清单14-2 调整为可在Internet Explorer 5.0 下运行的样式单
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="PERIODIC_TABLE">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:value-of select="."/>
</P>
</xsl:template>
XML 实用大全
第 455 页
</xsl:stylesheet>
图14-3 将清单14-4 中调整过的XSL 样式单应用于清单14-1 中的XML 文档, 在Internet Explorer 5.0 中生成的页面
理想的情况是,相同的XML 文档既可用于直接显示也可以预处理成HTML。不幸的是,XT 不接受http://www.w3.org/TR/WD-xsl
命名域,而IE 5 不接受http://www.w3.org/XSL/Transform/1.0 命名域。 由于不同的处理程序在对改进的XSL 规范各部分
的支持方面起到各有所长的作用,所以我们仍然处于这种痛苦的境地。
在本章剩下来的部分,在将文档装入浏览器之前,我将把它简单地预处理成HTML 格式。
XML 实用大全
第 456 页
14.3 XSL 模板
由xsl:template 元素定义的模板规则是XSL 样式单的最重要的部分。每个模板规则都是一个xsl:template 元素。这些规则
将特定的输出与特定的输入相关联。每个xsl:template 元素都有一个match 特性,用来指定要将此模板应用于输入文档的
哪个节点。
xsl:template 元素的内容是要运用的实际模板。模板可能既包含逐字显示在输出文档中的文本,同时也包含从输入XML 文
档将数据复制到结果的XSL 指令。因为所有的XSL 指令都放在xsl 命名域中(即它们都是以xsl:开头),所以要区分元素
(这些元素就是复制到输出的实际数据)和XSL 指令是很容易的。例如,下面为一个应用于输入树形结构根节点的模板:
<xsl:template match=”/”>
<html>
<head>
</head>
<body>
</body>
</html>
</xsl:template>
当XSL 处理程序读取此输入文档时,它所看到的第一个节点就是根节点。下面的规则与此根节点相匹配,并告诉XSL 处理程
序发送此文本:
<html>
<head>
</head>
<body>
</body>
</html>
这种文本就是结构整洁的HTML。由于XSL 文档本身就是XML 文档,所以其内容(包括模板在内)也必须是结构整洁的XML。
如果要在XSL 样式单中使用上面的规则,并且只在XSL 样式单中使用的话,那么输出就只限于上面的六个标记。(实际上,
可压缩为四个等价的标记:<html> <head/> <body/> </html>)。这是由于在规则中没有任何指令告诉格式化程序沿树形结
构逐级下移,以便寻找与样式单中的模板进一步的匹配。
14.3.1 xsl:apply-templates 元素
XML 实用大全
第 457 页
要达到根节点以外的地方,就要告诉格式化引擎处理根节点的子节点。一般来说,为了包括子节点中的内容,需递归处理整
个XML 文档中的节点。可以用来达到此目的的元素就是xsl:apply-templates。把xsl:apply-templates 放在输出模板中,
就可以告诉格式化程序把与源元素匹配的每个子元素同样式单中的模板相比较。用于匹配节点的模板本身可能包含
xsl:apply-templates 元素,以便搜索与其子节点的匹配。当格式化引擎处理节点时,此节点是作为整个树形结构来看待的。
这是树形结构的优点所在。每个部分都是以处理整体相同的方式来处理。例如,清单14-5 就是使用xsl:apply-templates
元素来处理子节点的XSL 样式单。
清单14-5:递归处理根下子节点的XSL 样式单
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
<xsl:template match="PERIODIC_TABLE">
<body>
<xsl:apply-templates/>
</body>
</xsl:template>
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(129)