• 热门标签

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

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

<xsl:template match=”/”>
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<xsl:apply-templates select=”PERIODIC_TABLE”/>
</body>
</html>
</xsl:template>
<xsl:template match=”PERIODIC_TABLE”>
<hl>Atomic Number vs. Atomic Weight</hl>
<table>
<th>Element</th>
<th>Atomic Number</th>
<th>Atomic Weight</th>
<xsl:apply-templates select=”ATOM”/>
</table>
</xsl:template>
<xsl:template match=”ATOM”>
XML 实用大全
第 468 页
<tr>
<td><xsl:value-of select=”NAME”/></td>
<td><xsl:value-of select=”ATOMIC_NUMBER”/></td>
<td><xsl:value-of select=”ATOMIC_WEIGHT”/></td>
</tr>
</xsl:template>
</xsl:stylesheet>
图14-4 Netscape Navigator 4.5 中显示的原子序数与原子量的关系表
14.6.3 使用/字符匹配子节点
在match 特性中并不局限于当前节点的子节点,可使用/符号来匹配指定的元素后代。当单独使用/符号时,它表示引用根节
点。但是,在两个名称之间使用此符号时,表示第二个是第一个的子代。例如,ATOM/NAME 引用NAME 元素,NAME 元素为ATOM
元素的子元素。
在xsl:template 元素中,这种方法能够用来只与某些给定类型的元素进行匹配。例如,下面的模板规则将ATOM 子元素的
SYMBOL 元素标记为strong。此规则与不是ATOM 元素的直系子元素的SYMBOL 元素无关。
<xsl:template match="ATOM/SYMBOL">
<strong><xsl:value-of select="."/></strong>
XML 实用大全
第 469 页
</xsl:template>
请记住,本规则选择的是作为ATOM 元素子元素的SYMBOL 元素,而不是选择拥有SYMBOL 子元素的ATOM 元素。换句
话说,在<xsl:value-of select="."/>中的.符号引用的是SYMBOL,而不是ATOM。
将模式写成一行的形成,就可以指定更深层的匹配。例如,PERIODIC_TABLE / ATOM / NAME 选择的是其父为ATOM 元素(其
父为PERIODIC_TABLE 元素)的NAME 元素。
还可以使用*通配符来代替层次结构中的任意元素名。例如,下面的模板规则应用于PERIODIC_TABLE 孙元素的所有SYMBOL
元素。
<xsl:template match="PERIODIC_TABLE/*/SYMBOL">
<strong><xsl:value-of select="."/></strong>
</xsl:template>
最后一点,就如上面所看到的那样,单独的/本身,表示选择文档的根节点。例如,下面的规则应用于文档根元素的所有
PERIODIC_TABLE 元素。
<xsl:template match="/PERIODIC_TABLE">
<html><xsl:apply templates/></html>
</xsl:template>
虽然 / 引用根节点,但/* 则引用任意根元素。例如,
<xsl:template match="/*">
<html>
<head>
<title>Atomic Number vs. Atomic Weight</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
XML 实用大全
第 470 页
</xsl:template>
14.6.4 使用//符号匹配子代
有时候,尤其是使用不规则的层次时,更容易的方法就是越过中间节点、只选择给定类型的所有元素而不管这些元素是不是
直系子、孙、重孙或其他所有的元素。双斜杠(//)引用任意级别的后代元素。例如,下面的模板规则应用于PERIODIC_TABLE
的所有NAME 子代,而不管它们具有何种层次的关系:
<xsl:template match=" PERIODIC_TABLE //NAME">
<i><xsl:value-of select="."/></i>
</xsl:template>
周期表实例相当简单,一看就懂,但这种技巧在更深层次,尤其是当元素包含该类的其他元素时(例如ATOM 包含ATOM),
就显得更加重要。
模式开头的操作符选择根节点的任何子节点。例如,下面的模板规则处理所有的ATOMIC_NUMBER 元素,而同时完全忽略其位
置:
<xsl:template match="// ATOMIC_NUMBER ">
<i><xsl:value-of select="."/></i>
</xsl:template>
14.6.5 通过ID 匹配
有人或许想把一特定的样式应用于特定的单一元素中,而不改变该类型的所有其他元素。在XSL 中实现此目的的最简单的方
法是,将样式与元素的ID 匦韵喙亓 ?墒褂胕d()选择符(其中包括以单引号括起来的ID 值)做到这一点。例如,下面的
规则使带有ID 值为e47 的元素变为粗体:
<xsl:template match=”id(‘e47’)”>
<b><xsl:value-of select=”.”/></b>
</xsl:template>
当然,上面假设以此方式选择的元素具有在源文档的DTD 中声明为ID 类型的特性。但是,通常情况并非如此。首先,许多
文档没有DTD,只不过结构整洁,但不合法。即使有DTD,也无法确保任何元素都有ID 类型的特性。可以在样式单中使用
xsl:key 元素,用来把输入文档中的特定特性声明为应该作为ID 来看待。
14.6.6 使用@来匹配特性
正如第5 章已经看到的那样,@符号根据特性名与特性相匹配,并选择节点。方法很简单,只需在要选择的特性前加上@符号。
例如,清单14-8 显示一样式单,用它来输出一张原子序数和熔点对照的表格。不仅写出了MELTING_POINT 的值,而且也写
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML实用大全(132)