曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
<xsl:template match="PERIODIC_TABLE">
<xsl:value-of select="ATOM"/>
</xsl:template>
有两种方法可依次处理多个元素。第一种方法已经看到了。只需要按下列方式与select 特性(它选择想要包括的特定元素)
一起使用xsl:apply-templates:
<xsl:template match="PERIODIC_TABLE">
<xsl:apply-templates select="ATOM"/>
</xsl:template>
<xsl:template match="ATOM">
<xsl:value-of select="."/>
</xsl:template>
第二个模板中的select="."告诉格式化程序取匹配的元素(本例中的ATOM)的值。
第二种方法是使用xsl:for-each。xsl:for-each 元素依次处理由其select 特性选择的每个元素。不过,无需任何附加的模
板。例如:
<xsl:template match="PERIODIC_TABLE">
<xsl:for-each select="ATOM">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
如果省略select 特性,那么处理源节点(本例中的PERIODIC_TABLE)的所有子节点。
<xsl:template match="PERIODIC_TABLE">
<xsl:for-each>
XML 实用大全
第 464 页
<xsl:value-of select="ATOM"/>
</xsl:for-each>
</xsl:template>
XML 实用大全
第 465 页
14.6 匹配节点的模式
xsl:template 元素的match 特性支持复杂的语法,允许人们精确地表达想要和不想要与哪个节点匹配。
xsl:apply-templates、xsl:value-of、xsl:for-each、xsl:copy-of 和xsl:sort 的select 特性支持功能更加强大的语法
的超集,允许人们精确地表达想要和不想要选择哪个节点。下面讨论匹配和选择节点的各种模式。
14.6.1 匹配根节点
为了使输出的文档结构整洁。从XSL 变换的第一个输出内容应为输出文档的根元素。因此,XSL 样式单一般以应用于根节点
的规则开始。要在规则中指定根节点,可将其match 特性设置为合适的值。例如:
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
本规则应用于根节点,并且只应用于输入树形结构的根节点。当读取到此根节点时,就输出<html>标记,处理根节点的子节
点,然后输出</html>标记。本规则推翻了根节点的缺省规则。清单14-6 显示了应用于根节点的带有单一规则的样式单。
清单14-6:用于根节点的带有单一规则的XSL 样式单
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/">
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<table>
Atom data will go here
XML 实用大全
第 466 页
< /table>
</body>
</html >
</xsl:template>
</xsl:stylesheet>
由于本样式单只为根节点提供一条规则,并且由于规则的模板未指明对子节点进行进一步的处理,因而只是按原样输出,所
以在模板中所看到的所有内容都将插入到结果文档中。换句话说,将清单14-6 中的样式单应用于清单14-1(或其他任何结
构整洁的XML 文档)中,所获得的结果如下:
<html><head><title>Atomic Number vs. Atomic
Weight</title></head><body><table>
Atom data will go here
</table></body></html>
14.6.2 匹配元素名
正如前面介绍的那样,最基本的模式只包含一个元素名,用来匹配所有带有该名的元素。例如,下面的模板与ATOM 元素相
匹配,并将ATOM 元素的ATOMIC_NUMBER 的子元素标成粗体:
<xsl:template match=”ATOM”>
<b><xsl:value-of select=”ATOMIC_NUMBER”/><b>
</xsl:template>
清单14-7 显示的是扩充了清单14-6 的样式单。首先,在根节点的规则模板中包括了xsl:apply-templates 元素。此规则使
用select 特性来确保只有PERIODIC_TABLE 元素获得处理。
其次,使用match=“PERIODIC_TABLE”语句创建了只适用于PERIODIC_TABLE 元素的规则。本规则设置周期表的标题,然后
应用模板来从ATOM 元素中生成周期表的主体。
最后,ATOM 规则使用<xsl:apply-templates select=“NAME”/>、<xsl:apply-templates select=“ATOMIC_NUMBER”/>和
<xsl:apply templates select=“ATOMIC_WEIGHT”/>,明确地选择ATOM 元素的NAME、ATOMIC_NUMBER 和ATOMIC_WEIGHT
子元素。它们都包装在HTML 的tr 和td 元素中,以便最终的结果是与原子量相匹配的原子序数表。图14-4 显示将清单14-7
中的样式单应用于整个周期表文档中的输出结果。
对本样式单需要注意的是:在输入文档中的NAME、ATOMIC_NUMBER 和ATOMIC_WEIGHT 元素的精确顺序是不重要的。它们在输
出文档中以选择它们的顺序出现,也就是说首先为原子序数,然后是原子量。相反,在输入文档中,各个原子依字母顺序排
序。以后,将会看到如何使用xsl:sort 元素来改变这个顺序,以便使用更常规的原子序数的顺序来排列原子。
XML 实用大全
第 467 页
清单14-7:利用select 的施用于元素的特定类的模板
<?xml version=”1.0”?>
<xsl:stylesheet
xmlns:xsl=”http://www.w3.org/XSL/Transform/1.0”>
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML实用大全(131)