4.1 节点集合函数
number
last()
last
函数返回一个数字,该数字等於从表达式求值上下文中的上下文大小
number
position()
position
函数返回一个数字,该数字等於从表达式求值上下文中的上下文位置
number
count(node-set)
count
函数返回在参数node-set中节点的个数。
node-set
id(object)
id
函数id通过元素的唯一的ID选择他们(参见 5.2.1 唯一 ID)。当id
的参数是节点集合类型时,结果是对在参数节点集合里的每一个节点的字串值应用id
的结果的联合。当到id
的参数是任何其它的类型时,参数被转换成一个字符串,即如调用了string
函数一样;字符串被分割成由空白格分开的单字片序列(空白格是与产生式 S匹配的字符的任何顺序);结果是在上下文节所在的同一文档中那些具有唯一id
等於序列中任何一个单字片的元素的节点集合。
string
local-name(node-set?)
函数 local-name
返回一个节点的扩展名的局域部分,该节点为依照文档顺序参数节点集合里的第一个节点。如果参数节点集合是空或第一节点没有扩展名,则返回一个空字符串。如果参数被省略,它则缺省为仅有一个上下文节点成员的节点集合。
string
namespace-uri(node-set?)
函数 namespace-uri
返回依照文档顺序参数节点集合中的第一个节点的扩展名的命名空间 URI。如果参数节点集合是空的,第一节点没有扩展名,或扩展名的命名空间 URI 为空,则返回一个空字符串。如果参数被省略,它则缺省为仅有一个上下文节点成员的节点集合。
注意:
除了元素节点和属性节点外函数 namespace-uri
返回的字符串将为空。
string
name(node-set?)
函数 name
返回一个字符串,字符串包含一个QName,它代表依照文档顺序参数节点集合中的第一个节点的扩展名。QName代表扩展名字时,必须注意到命名空间声明实际上是对被表示的扩展名的节点的。典型地,在XML资源中将是 QName 出现。如果命名空间声明实际上是对与有同样命名空间的多重的前缀相联系的节点,这不必是实际上的情况。然而,实现可以包括有关节点的表示的原来前缀的信息;在这样的情况下,实现能保证返回的字符串总是与在 XML 文档使用的QName一样。如果参数节点集合是空的或第一节点没有扩展名,返回一个空的字符串。如果它省略了的参数,则缺省为仅有上下文节点一个成员的节点集合。
注意:
除了元素节点和属性节点外,由 name
函数返回的字符串将与 local-name
函数返回的字符串一样。
4.2 字符串函数
string
string(object?)
string
函数将对象依下列各项转换成字符:
-
节点集合通过返回在节点集合中文档顺序下第一个节点的字串值来转换成字符串。如果节点是空的则返回空字符串。
-
数字按以下方式转换成字符
-
NaN 转换成字符串 NaN
-
正零转换成字符串 0
-
负零转换成字符串 0
-
正无穷大转换成字符串 Infinity
-
负无穷大转换成字符串 -Infinity
-
如果数字是整数,该数字表示成一个与无小数点及领头零的 Number一样的十进制的形式,如果数字是负数,则在其前加一个负号(-
)。
-
否则,该数字表示成一个与包括小数点及至少在小数点前面有一数字并且小数点后有一数字的 Number一样的十进制的形式,如果数字是负数,则在其前加一个负号(-
);除了在小数点前要求直接要有一个位的零外,不应该有领头的零;在小数点后除了要求的一位数外,应有不多不少的位来区分该数与所有其它的 IEEE 754 数值。
-
布尔的假值转换成字符串 false
。布尔的真值转换成字符串 true
。
-
不是四种基本类型的对象依照所属类型的方式转换成字符串。
如果参数省略,则缺省为仅有一个上下文节点为成员的节点集合。
注意:
string
函数不是要用来将数字转换成字符串呈现给用户的。 format-number
函数和[XSLT] 中的 xsl:number
元素提供了这样的功能。
string
concat(string, string, string*)
concat
函数返回它的参数的联结。
boolean
starts-with(string, string)
如果第一个字符串参数以第二个字符串参数起头,starts-with
函数返回真,否则,返回假。
boolean
contains(string, string)
如果第一个字符串参数包含第二个字符串参数,contains
函数返回真,否则,返回假。
string
substring-before(string, string)
substring-before
函数返回第一个字符串参数在第二个参数首次出现之前的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。例如,substring-before("1999/04/01","/")
返回 1999
。
string
substring-after(string, string)
substring-after
函数返回第一个字符串参数在第二个参数首次出现之后的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。例如, substring-after("1999/04/01","/")
返回 04/01
,而 substring-after("1999/04/01","19")
返回 99/04/01
。
string
substring( string , number , number? )
substring
函数返回第一个字符串参数从第二个参数所指定的位置开始,以第三个参数为长度的子字符串。例如, substring("12345",2,3)
返回 "234"
。如果没有第三个参数,则返回从第二个参数所指定的位置开始直到结束。例如, substring("12345",2)
返回"2345"
。
更确切地说,每一个字符串里的字符(参看3.6 字符串)是被看作有一个数字位置:第一个字符是 1 ,第二个字符是 2 ,依此类推。
注意:
这与 Java 和 ECMAScript 不同,在 Java 和 ECMAScript 中 String.substring
方法将第一个字符的位置当成 0 。
该返回的子字符串包含那些字符位置大於或等於第二参数的取整值,如果指定了第三个参数,则小於第二和第三个参数的取整值之和;以上的比较和加法遵循 IEEE 754 的规则;取整操作仿佛是调用了round
函数。以下的例子说明了各种不常见的案例:
-
substring("12345", 1.5, 2.6)
返回 "234"
-
substring("12345", 0, 3)
返回 "12"
-
substring("12345", 0 div 0, 3)
返回 ""
-
substring("12345", 1, 0 div 0)
返回 ""
-
substring("12345", -42, 1 div 0)
返回 "12345"
-
substring("12345", -1 div 0, 1 div 0)
返回 ""
number
string-length( string? )
string-length
返回字符串(参看 3.6 字符串)中字符的个数。如果参数省略,则缺省为一个上下文节点再转换成字符串,也就是上下文节点的 字串值。
string
normalize-space(string?)
normalize-space
函数返回空白符规范化 后的参数字符串,该规范化是清除领头及结尾的空白字以及用一个空白符替换连续的空白符。空白符字符与 XML 中的产生式 S 所允许的是一样的。如果参数省略,则缺省为一个上下文节点再转换成字符串,也就是上下文节点的 字串值。
string
translate(string, string, string)
translate
函数返回第一个参数的字符串,其中有在第二个参数中出现的字符都被在第三个参数中相对应位置的字符所替换。例如,translate("bar","abc","ABC")
返回字符串 BAr
。如果,第二个参数里的字符在第三个参数的相对应位置没有字符(因为第二个参数里的字符串比第三个参数的字符串长),那么,第一个参数里的那个字符将被移去。例如,translate("--aaa--","abc-","ABC")
返回 "AAA"
。如果在第二个参数里的字符出现超过一次,那么,第一次的出现决定替换的字符。如果第三个参数里的字符串比第二个参数的字符串长, 那么,多余的字符将被忽略。
注意:
translate
函数不是一个对所有语言大小写转换的完整解决方案。XPath 的将来的版本可能会为大小写转换提供额外的函数。
4.4 数字函数
number
number(object?)
number
函数参数依下列各项转换成数字:
-
可选的空白符跟随可选的减号再跟随 Number 再跟随空白符的字符串转换成 IEEE 754 最接近的 (根据 IEEE 754 就近取整规则) 由字符串表示的数学值的数字;其它任何的字符串转换成 NaN
-
布尔真转换成 1 ;布尔假转换成 0
-
节点集合首先转换成字符串好像调用了 string
函数,然后再按字符串参数的方式转换
-
不是四种基本类型的对象依照所属类型的方式转换成数字。
如果参数省略,则缺省为仅有一个上下文节点为成员的节点集合。
注意:
除非元素是在语言自然格式(典型地被改变成语言特定的格式呈现给用户)下代表数字数据的类型,number
函数不应用于 XML 文档元素中的数字转换。另外,除非语言自然格式与 XPath 句法的 Number,number
函数不能使用。
number
sum(node-set)
对於在参数节点集合的每个节点,sum
函数返回节点字串值转换成数字后的和。
number
floor(number)
floor
函数返回不大於参数的整数的最大数 (最接近于正无穷大) 。
number
ceiling(number)
ceiling
函数返回不小於参数的整数的最小数 (最接近于负无穷大) 。
number
round(number)
round
函数返回最接近于参数的整数。如果有两个这样的数字,那么,返回最接近于正无穷大的那个。如果参数是 NaN,那么返回 NaN。如果参数是正无穷大,那么返回正无穷大。如果参数是负无穷大,那么返回负无穷大。如果参数是正零,那么返回正零。如果参数是负零,那么返回负零。如果参数小於零,但大於或等於 -0.5 ,那么返回负零。
注意:
对於最后两种情况,调用round
函数与加上 0.5 后并调用 floor
的结果不同。