曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
<xsl:value-of
select="from-parent(*)/from-children(NAME)"/>
</td>
<td>
<xsl:value-of
select="from-parent(*)/from-children(ATOMIC_NUMBER)"/>
</td>
<td>
<xsl:value-of select="from-self(*)"/>
<xsl:value-of select="from-attributes(UNITS)"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
这并不是解决这一问题的唯一方法。另外一种可能的方法是使用from-preceding-siblings()和from-following-siblings()
轴或相对位置(前面或后面)不确定时同时使用两者。用于MELTING_POINT 元素的必要模板规则如下所示:
<xsl:template match="MELTING_POINT">
<tr>
<td>
<xsl:value-of
XML 实用大全
第 482 页
select="from-preceding-siblings(NAME)
| from-following-siblings(NAME)"/>
</td>
<td>
<xsl:value-of
select="from-preceding-siblings(ATOMIC_NUMBER)
| from-following-siblings(ATOMIC_NUMBER)"/>
</td>
<td>
<xsl:value-of select="from-self(*)"/>
<xsl:value-of select="from-attributes(UNITS)"/>
</td>
</tr>
</xsl:template>
14.7.1.3 缩写句法
表14-2 中的各种from-axis()函数对于轻松的打字工作来说过于冗长。XSL 还定义了缩写句法,以便代替最常用的轴,在实
际过程中使用更广。表14-3 显示的是完整句法形式与缩写词的对等关系。
表14-3 选择表达式的缩写句法
缩写词 完整句法形式
. from-self(node())
.. from-parent(node())
Name from-children(name)
@name from-attributes(name)
// /from-descendants-or-self(node())/
XML 实用大全
第 483 页
使用缩写句法重写清单14-11,得到清单14-12。但这两个样式单所获得的输出结果是完全一样的。
清单14-12:使用缩写句法获得的熔点和原子序数对照表
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/I.O">
<xsl:template match="/PERIODIC_TABLE">
<html>
<body>
<hl>Atomic Number vs. Melting Point</hl>
<table>
<th>Element</th>
<th>Atomic Number</th>
<th>Melting Point</th>
<xsl:apply-templates select="ATOM"/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="ATOM">
<xsl:apply-templates
select="MELTING_POINT"/>
</xsl:template>
<xsl:template match="MELTING_POINT">
<tr>
XML 实用大全
第 484 页
<td>
<xsl:value-of
select="../NAME"/>
</td>
<td>
<xsl:value-of
select="../ATOMIC_NUMBER"/>
</td>
<td>
<xsl:value-of select="."/>
<xsl:value-of select="@UNITS"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
匹配模式可以只使用缩写句法(并非使用所有的缩写句法)。对于选择表达式,只能使用表14-2 中的from-axis()函数的
完整句法形式。
14.7.2 表达式类型
每个表达式都计算出唯一的值。例如,表达式3+2 运算值为5。上面所使用的表达式求出的都是节点集合。但是,在XSL 中,
有如下五种类型的表达式:
• 节点集合类型
• 布尔类型
• 数值类型
• 字符串类型
• 结果树形片段
14.7.2.1 节点集合
XML 实用大全
第 485 页
节点集合(node set)是输入文档的一组节点的列表。表14-2 中的from-axis()函数返回包含匹配节点的节点集合。哪些
节点处于某一函数返回的节点集合中,这要根据当前节点(也可以认为是上下文节点)、函数的参数而定,当然也依赖于它
是哪个函数。
习惯于面向对象语言(如Java 和C++)的程序员可能将当前节点看作为调用函数的对象;也就是说,在
a.doSomething(b, c)中,当前节点为a。但是,在XSL 中,当前节点总是明确的;也就是说,按照定义a 类的文
件所规定的形式,更可能写成doSomething(b, c)形式。
例如当当前节点为例14-1 中的PERIODIC_TABLE 元素时,表达式select="from-children(ATOM)"返回的节点集合含有两个
ATOM 元素。当上下文节点为例14-1 中的PERIODIC_TABLE 元素时,表达式
select="from-children(ATOM)/from-children(NAME)" 返回的节点集合含有<NAME> Hydrogen </NAME>和<NAME> Helium
</NAME>两个元素节点。
上下文节点(context node)是上下文节点列表(context node list)的一个成员。上下文节点列表是同时都与同一个规
则相匹配的元素集合,通常是xsl:apply-templates 或xsl:for-each 调用的结果。例如,当清单14-12 应用于清单14-1
时,ATOM 模板调用两次,第一次用于氢原子,第二次用于氦原子。第一次调用时,上下文节点就是氢的ATOM 元素。第二次
调用时,上下文节点就是氦的ATOM 元素。但是,在这两次调用中,上下文节点列表则是包含氢和氦的ATOM 元素的集合。
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML实用大全(136)