|
XPath 定义了一组函数,称为核心函数库。每个函数从三个方面来定义:
- 函数名
- 返回类型(必须的,不能使用 void)
- 参数类型(可以没有参数或者带有多个参数,参数可以是必需的也可以是可选的)
节点集函数提供关于一组节点(一个或多个节点)的信息。常用的节点集函数有:
- last()——返回一个称为上下文大小的数字,即给定上下文中的节点数。
- position()——返回一个称为上下文位置的数字,集当前节点在给上下文节点集(列表)中的位置。比如,可以用表达式 position()=last() 测试处理的是否是集合中的最后一个节点。
- count(node-set)——返回实参节点集中的节点数。比如,在 AuctionItemList.xml 文档的上下文中,count(//item) 返回 item 元素的个数,即 7。
通过字符串函数您可以操纵字符串。常用的字符串函数有:
- string()——把参数对象或者上下文结点转化成字符串。合法的参数包括节点集、数字、布尔值或者其他任何类型——但是对于最后一种情况转换的结果不可预料。建议使用 XSLT 函数 format-number 把数字转化成字符串,或者使用 XSLT 元素 xsl:number 提供给用户。
- concat()——以两个或更多字符串作为参数并返回这些字符串的连接。比如,concat("Original ","recording ","Blue Train LP record") 返回 "Original recording Blue Train LP record"。
- starts-with()——如果第一个字符串参数以第二个字符串参数开始则返回 true,否则返回 false。比如,starts-with("Miles Smiles album, CD", "Miles") 返回 true。
- contains()——如果第一个字符串参数包含第二个字符串参数则返回 true,否则返回 false。比如,contains("Miles Smiles album, CD", "album") 返回 true。
布尔函数用于把一个对象或字符串转化成 true 或者 false,或者直接获得真或假的值。布尔函数有:
- boolean()——根据以下规则返回作为参数传递的对象转换成布尔值的结果:不同于 0 或者 NaN 的数字为 true;非空的节点集或者字符串为 true。其他类型的对象已不可预料的方式转换。
- not()——如果作为参数传递的布尔值为 false 返回 true,否则返回 false。
- true() 和 false()——分别返回 true 或 false。这些函数很有用,因为在 XPath 中 true 和 false 被看作是普通的字符串而不是真和假的值。
- lang()——如果上下文节点的语言和字符串参数中指定的语言相同,或者是它的一种子语言返回 true,否则返回 false。上下文节点的语言通过 xml:lang 属性的值定义。
数字函数
数字函数是 XPath 的数值函数,都返回数字。其中包括:
- number()——把可选的对象参数(如果没有指定参数则使用上下文节点)转化成数字,转换的规则如下:
- 布尔值 true 转换成1,false 转换成 0。
- 字符串转换成合理的数字。
- 节点集首先转换成字符串,然后把这个字符串转换成数字。
其他类型对象以不可预料的方式转换。比如,number("250") 返回 250,而 number("miles1965") 返回 NaN。
- sum()——对节点集参数中的所有节点应用 number() 函数后返回它们的和。
- floor()——返回不大于数字参数的最大整数数字。比如,floor(2.75) 返回 2。
- ceiling()——返回不小于数字参数的最小整数数字。比如,ceiling(2.75) 返回 3。
- round()——返回和数字参数最接近的整数数字。比如,round(2.75) 返回 3。
|
|
|