- XML基础教程:使用xsl:value-of来计算节点值
-
使用xsl:value-of来计算节点值
xsl:value-of元素把输入文档中的节点值复制到输出文档中。xsl:value-of 元素的select特性指定正在获取的是哪个节点值。
例如,假设要将文字An Atom代替为由NAME子元素内容给出的ATOM元素的名称,可用< xsl:value-of select="NAME"/>代替An Atom,如下所示:
< xsl:template match="ATOM">
< xsl:value of select="NAME"/>
< /xsl:template>
然后,当将样式单应用于清单14-1时,产生如下文本:
< html>< head/>< body>
Hydrogen
Helium
< /body>< /html>
选择其值的项目(本例中的NAME元素)是与源节点有关的。源节点是由模板来匹配的项目(本例中的特指ATOM元素)。因此,当氢的ATOM与< xsl:template match= "ATOM">相匹配,氢的ATOM的NAME元素就由xsl:value-of选定了。当氦的ATOM与< xsl:template match= "ATOM">相匹配时,氦的ATOM的NAME元素就由xsl:value-of选定了。
节点的值总是字符串,有时可能为空字符串。此字符串的精确内容由节点的类型而定。最普通的节点类型为元素,元素节点的值特别简单,就是在元素的开始标记和结束标记之间的所有可析字符数据(但不是标记!)。例如,清单14-1中的第一个ATOM元素如下所示:
< ATOM STATE="GAS">
< NAME>Hydrogen< /NAME>
< SYMBOL>H< /SYMBOL>
< ATOMIC_NUMBER>l< /ATOMIC_NUMBER>
< ATOMIC_WEIGHT>1.00794< /ATOMIC_WEIGHT>
< OXIDATION_STATES>1< /OXIDATION_STATES>
< BOILING_POINT UNITS="Kelvin">20.28< /BOILING_POINT>
< MELTING_POINT UNITS="Kelvin">13.81< /MELTING_POINT>
< DENSITY UNITS="grams/cubic centimeter">< !- At 300K ->
0.0899
< /DENSITY>
< /ATOM>
元素的值显示如下:
Hydrogen
H
1
1.00794
1
20.28
13.81
0.0899
我通过删除所有的标记和注释后计算出了这些值。包括空格在内的其他一切内容都完整无缺地保留着。其他六个节点类型的值也可以类似的非常明显的方式加以计算。表14-1总结了这些值的结果。
表14-1 节点值
节点类型
值
根节点
根元素的值
元素
包括在元素中的所有可析的字符数据(包括元素的任何后代中的字符数据)
文本
节点的文本;实际上为节点本身
特性
标准化的特性值(详细说明见XML 1.0推荐的第3.3.3节);主要为实体还原后的特性值,截去前导和后随的空格;不包括特性名、等号或引号
命名域
用于命名域的URL
处理指令
处理指令的值;不包括< 或>以及处理指令名
注释
注释文本,不包括< !--和-->
- 与本文主题相关的文章
