曝光台 注意防骗
网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者
表14-4 列举了许多既可以作为参数,也可以作为上下文节点对节点集合进行操作的函数。
表14-4 对节点集合进行操作的函数
函数 返回值类型 返回值
position() 数值 上下文节点列表中上下文节点的位置。列表中的第一个节
点其位置为1
last() 数值 上下文节点集合中的节点数
count(node-set) 数值 在node-set 参数指明的节点集合中的节点数
id(string) 节点集合 节点集合,其中只有一个元素(在同一个文档的任何位置)
其ID 为string;或者空集合(如果任何元素都没有指定
的ID)
idref(node-set) 节点集合 节点集合,包括文档中的某些元素,其ID 属性为在参数
node-set 中指明节点值中的(以空格分开)记号之一
key(string name,
string value)
节点集合 节点集合,包括文档中所有具有指定值的关键字的节点。
关键字是使用顶层xsl:key 元素来设置的
keyref(string
name, node set
values)
节点集合 节点集合,包括文档中所有具有某种关键字节点,此关键
字的值与第二个参数中的节点值相同
doc(string URI) 节点集合 文档或由URI 引用的文档部分中的节点集合;这些节点从
URI 使用的命名的anchor 标记或XPointer 中选择如果
XML 实用大全
第 486 页
没有命名的anchor 标记或Xpointer,那么所指文档的根
元素就存在于节点集合中。相对URI 是相对于输入文档中
的当前节点的
docref(node set) 节点集合 节点集合,包括由URI 引用的,其值为node set 参数的
所有节点
local-part(node
set)
字符串 node set 参数中第一个节点的本地部分(命名域前缀后
面的所有内容);当不使用任何参数时可用于获取上下文
节点的本地部分
namespace(node
set)
字符串 节点集合中第一个节点命名域的URI;当不使用任何参数
时,可用于获得上下文节点的命名域URI;如果节点处于
缺省命名域内,则返回空字符
qname(node set) 字符串 node set 参数中第一个节点的合法名称(可以为前缀和
本地部分);要获得上下文节点的合法名称,可不使用任
何参数
generate-id(node
set)
字符串 参数node set 中第一个节点的唯一标识符;不带参数使
用时,可生成上下文节点的ID
第18 章“命名域”将讨论命名域URI、前缀和本地部分。
doc()和docref()函数有点模糊,特别是如果URI 只引用非结构完整的XML 节点或数据片段,就更是如此。细节还
要留待XSL 规范的未来版本加以澄清。
如果向这些函数传递了一个错误类型的参数,那么XSL 试图将此参数转变成正确的类型;例如,将数字12 转变成字符串
“12”。但是,任何参数都不能转变成节点集合。
position()函数可用来对元素进行计数。清单14-13 是一个样式单,它使用<xsl:value-of select = "position"/>,将元
素在文档中的位置作为原子名的名称的前缀。
清单14-13:按照文档中的顺序对原子进行编号的样式单
<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/XSL/Transform/1.0">
<xsl:template match="/PFRIODIC_TABLE">
XML 实用大全
第 487 页
<HTML>
<HEAD><TITLE>The Elements</TITLE></HEAD>
<BODY>
<xsl:apply-templates select="ATOM"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="ATOM">
<P>
<xsl:value-of select="position()"/>.
<xsl:value-of select="NAME"/>
</P>
</xsl:template>
</xsl:stylesheet>
将此样式单应用于清单14-1 时,其输出结果如下:
<HTML><HEAD><TITLE>The Elements</TITLE></HEAD><BODY><P>1.
Hydrogen</P><P>2.
Helium</P></BODY></HTML>
14.7.2.2 布尔类型
布尔值为两个值之一:true(真)或false(假)。XSL 允许将任何类型的数据转变成布尔值。当在可望为布尔值的地方使
用了字符串或数值或节点集合时,通常就暗示需要这样做,xsl:if 元素的test 特性中正是这样情况。根据下列这些规则,
也可以使用boolean()函数来完成这种变换过程,此函数将任何类型(或如果不提供参数即为上下文节点)的参数转变成布
尔值:
• 如果数值为零或NaN(一种特定的符号,意为Not a Number,即不是数字,用于表示被零除所获得的结果以及类似
的非法操作),则此值为false,否则为true
• 空节点集合为false;所有的其他节点集合为true
• 空结果片段为false;所有其他结果片段都为true
• 零长度字符串为false;所有其他字符串为true
XML 实用大全
第 488 页
使用下列操作符所获得的表达式的结果也可以得到布尔值:
= 等于号
< 小于号(实际使用<)
> 大于号
< = 小于等于(实际使用<=)
> = 大于等于
在特性值中<符号是非法的。因此,必须用<来代替,甚至作为小于运算符时也是如此。
这些运算符最常用于判断是否调用某个规则。选择表达式不仅含有选择某些节点的模式,而且还可以含有判断条件,从而使
用此判断条件对所选的节点列表进一步筛选。例如,from-children(ATOM)选择当前节点的所有ATOM 子节点。但是,
from-children(ATOME[position()=1])只选择当前节点的第一个ATOM 子节点。[position()=1]为一判断语句,它在节点上
测试ATOM,返回一个布尔结果值,如果当前节点的位置等于1,则返回的结果为true,否则为false。对每个节点的测试都
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:
XML实用大全(137)