XPath序列之五

** 5 ** ** 函数调用 ** ** **

XPath 中另外一种重要的表达式则是函数调用。 XPath 定义了一个核心函数库,这个库里的函数是所有事先都必须支持的。

函数库里的所有函数都属于非命名空间,因此它们的名称不需要命名空间前缀。 XPath 可以通过适当的扩充来增大这个核心函数库,在扩充时,扩充的函数名称必须是具有命名空间前缀的限定名。以下分类描述核心函数库中的函数。

在函数库中的每一个函数都使用一个函数原型,该原型给定返回类型,函数的名称,以及参数的类型。如果参数类型后跟随一个问号,那么参数是可选的;否则,参数则是必须有的。

(1) 节点集合函数

_ number _ last ()

描述:返回上下文节点序列中的节点的数目。

_ number _ position ()

描述: position 函数返回一个数字,该数字等于上下文节点在上下文集中的索引值。

_ number _ count ( node-set )

描述: count 函数返回在参数 node-set 中节点的个数。

_ node-set _ id ( object )

描述: id 函数通过唯一的 ID 选择元素。当 id 的参数是节点集合类型时,结果是对参数节点集合里的每一个节点的字串值应用 id 函数的结果的合并。当 id 的参数是任何其它的类型时,参数首先被转换成一个字符串,即如调用了 string 函数一样,字符串被分割成由空白格分开的助记符的列表。结果是在同一文档中那些 id 值等于列表中任何一个助记符的元素节点的集合。

_ string _ local-name ( node-set ?)

描述:函数 local-name 返回一个节点的扩展名的本地部分,该节点为参数节点集里的第一个节点。如果参数节点集合是空或第一节点没有扩展名,则返回一个空字符串。如果参数被省略,它默认将上下文节点作为节点集的的唯一成员。

_ string _ namespace-uri ( node-set ?)

描述:函数 namespace-uri 返回参数节点集合中的第一个节点的扩展名的命名空间 URI 。如果参数节点集合是空的,第一节点没有扩展名,或扩展名的命名空间 URI 为空,则返回一个空字符串。如果参数被省略,它默认将上下文节点作为节点集的的唯一成员。

_ string _ name ( node-set ?)

描述:函数 name 返回一个字符串,字符串包含一个 QName ,它依照文档顺序返回参数节点集合中的第一个节点的扩展名。如果参数节点集合是空的或第一个节点没有扩展名,返回一个空的字符串。如果它省略了的参数,则默认将上下文节点作为节点集的的唯一成员。

(2) 字符串函数

_ string _ string ( object ?)

描述: string 函数将对象依下列各项转换成字符:

· 如果是节点集,则返回在节点集合中文档顺序下第一个节点的字串值,如果节点集是空的则返回空字符串。

· 数字按以下方式转换成字符

o NaN 转换成字符串 NaN

o 正零转换成字符串 0

o 负零转换成字符串 0

o 正无穷大转换成字符串 Infinity

o 负无穷大转换成字符串 -Infinity

o 如果数字是整数,该数字表示成一个与无小数点及打头零的的十进制的形式,如果数字是负数,则在其前加一个负号。

o 否则,该数字表示成一个与包括小数点及至少在小数点前面有一数字并且小数点后有一数字的的十进制的形式,如果数字是负数,则在其前加一个负号;除了在小数点前要求直接要有一个位的零外,不应该有打头的零;在小数点后除了要求的一位数外,应有不多不少的位来区分该数与所有其它的 IEEE 754 数值。

· 布尔的假值转换成字符串 false 。布尔的真值转换成字符串 true 。

· 不是四种基本类型的对象依照所属类型的方式转换成字符串。

如果参数省略,则缺省为仅有一个上下文节点为成员的节点集合。

_ 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 函数返回第一个字符串参数中在第二个参数首次出现之前的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。

_ string _ substring-after ( string , string )

描述: substring-after 函数返回第一个字符串参数中在第二个参数首次出现之后的子字符串,或者,如果第一个字符串参数不包含第二个字符串参数则返回空字符串。

_ string _ substring ( string , number , number ? )

描述: substring 函数返回第一个字符串参数中从第二个参数所指定的位置开始,以第三个参数为长度的子字符串。如果没有第三个参数,则返回从第二个参数所指定的位置开始直到结束。

_ number _ string-length ( string ? )

描述: string-length 返回字符串中字符的个数。如果参数省略,则缺省为上下文节点的 字串值。

_ string _ normalize-space ( string ?)

描述: normalize-space 函数返回空白符规范化后的参数字符串,该规范化是清除前导及结尾的空白以及用一个空白符替换连续的空白符。如果参数省略,则缺省为上下文节点的字串值。

_ string _ translate ( string , string , string )

描述: translate 函数返回第一个参数的字符串,其中有在第二个参数中出现的字符都被在第三个参数中相对应位置的字符所替换。例如, translate("bar","abc","ABC") 返回字符串 BAr 。如果,第二个参数里的字符在第三个参数的相对应位置没有字符(因为第二个参数里的字符串比第三个参数的字符串长),那么,第一个参数里的那个字符将被移去。例如, translate("--aaa--","abc-","ABC") 返回 "AAA" 。如果在第二个参数里的字符出现超过一次,那么,第一次的出现决定替换的字符。如果第三个参数里的字符串比第二个参数的字符串长, 那么,多余的字符将被忽略。

(3) 布尔函数

_ boolean _ boolean ( object )

描述: boolean 函数依下列各项转换其参数:数字为真当且仅当它不是正负零或 NaN ;节点集合为真当且仅当它不为空;字符串为真当且仅当它的长度不为零;不是四种基本类型的对象依照所属类型的方式转换成布尔类型。

_ boolean _ not ( boolean )

描述:如果参数为真 not 函数返回真,否则返回假。

_ boolean _ true ()

描述: true 函数返回真。

_ boolean _ false ()

描述: false 函数返回假。

_ boolean _ lang ( string )

描述:依赖于 xml:lang 属性指定的上下文节点的语言与参数指定的语言是否一致或一样,参数字符串 lang 函数返回真或假。上下文节点的语言由上下文节点的 xml:lang 属性决定,如果没有 xml:lang 属性则由最接近的有 xml:lang 属性祖先节点的 xml:lang 属性值决定。如果没有这样的节点,那么 lang 函数返回假。如果有这样的节点,比较时,不考虑大小写且忽视使用 – 标记的语言后缀。

(4) 数字函数

_ number _ number ( object ?)

描述: number 函数参数依下列各项转换成数字:

· 字符串转换成 IEEE 754 最接近的(根据 IEEE 754 就近取整规则)数字;如果不能转换为数值,则返回 NaN

· 布尔真转换成 1 ;布尔假转换成 0

· 节点集首先转换成字符串,然后再按字符串参数的方式转换

· 不是四种基本类型的对象依照所属类型的方式转换成数字。

如果参数省略,则缺省为仅有一个上下文节点为成员的节点集合。

_ number _ sum ( node-set )

描述:对于在参数节点集合的每个节点, sum 函数返回节点字串值转换成数字后的和。

_ number _ floor ( number )

描述: floor 函数返回不大于参数的整数的最大数。

_ number _ ceiling ( number )

描述: ceiling 函数返回不小于参数的整数的最小数。

_ number _ round ( number )

描述: round 函数返回最接近于参数的整数。如果有两个这样的数字,那么,返回最接近于正无穷大的那个。如果参数是 NaN ,那么返回 NaN 。如果参数是正无穷大,那么返回正无穷大。如果参数是负无穷大,那么返回负无穷大。如果参数是正零,那么返回正零。如果参数是负零,那么返回负零。如果参数小于零,但大于或等于 -0.5 ,那么返回负零。

-----------------------------end-----------------------------------

Published At
Categories with Web编程
Tagged with
comments powered by Disqus