最新的Web开发教程
 

XSLT XPath和XQuery函数


XSLT 2.0,XPath 2.0中,和XQuery 1.0,共享相同的函数的库。


函数参考

为函数命名空间的默认前缀是FN:
函数命名空间的URI是:http://www.w3.org/2005/xpath-functions

Tip:函数经常与fn:前缀,如FN: string() 然而,由于FN:是命名空间的默认前缀,函数名称不需要前缀调用时。

存取函数

名称 描述
fn:node- name( node ) 返回参数节点的节点名
fn: nilled( node ) 返回一个布尔值,它指示参数节点是否nilled
fn: data( item.item,... ) 采取项目的序列,并返回原子值序列
fn:base- uri()
fn:base- uri( node )
返回电流或指定节点的基极 - uri属性的值
fn:document- uri( node ) 返回文档URI属性的值指定节点

错误和跟踪功能

名称 描述
fn: error()
fn: error( error )
fn: error( error,description )
fn: error( error,description,error-object )
例如: error(fn:QName('http://example.com/test', 'err:toohigh') '错误:价格太高')

结果:返回http://example.com/test#toohigh和字符串"Error: Price is too high"的外部处理环境

fn: trace( value,label ) 用于调试查询

在数字值的函数

名称 描述
fn: number( arg ) 返回参数的数值。 该参数可以是一个布尔值,字符串或节点集

例如: number('100')
结果:100

fn: abs( num ) 返回参数的绝对值

例如: abs(3.14)
结果:3.14

例如: abs(-3.14)
结果:3.14

fn: ceiling( num ) 返回比数参数更大的最小整数

例如: ceiling(3.14)
结果:4

fn: floor( num ) 返回是不大于数字参数的最大整数

例如: floor(3.14)
结果:3

fn: round( num ) 舍入数字参数最接近的整数

例如: round(3.14)
结果:3

fn:round-half-to- even() 例如:圆半TO- even(0.5)
结果:0

例如:圆半TO- even(1.5)
结果:2

例如:圆半TO- even(2.5)
结果:2

在字符串的函数

名称 描述
fn: string( arg ) 返回参数的字符串值。 的参数可以是一个数字,布尔值或节点集

例如: string(314)
结果: "314"

fn:codepoints-to- string(( int,int,... ) ) 创建从Unicode标准代码点的序列串

例如:码点-TO- string((84, 104, 233, 114, 232, 115, 101)
结果: 'Thrse'

fn:string-to- codepoints( string ) 返回Unicode标准码点的序列从一个字符串

实施例:字符串TO- codepoints("Th r se")
结果: (84, 104, 233, 114, 232, 115, 101)

fn:codepoint- equal( comp1,comp2 ) 如果COMP1的值等于COMP2的值,根据Unicode代码点核对,则返回true (http://www.w3.org/2005/02/xpath-functions/collation/codepoint)否则返回假
fn: compare( comp1,comp2 )
fn: compare( comp1,comp2,collation )
返回-1,如果COMP1小于COMP2,0,如果COMP1等于COMP2,或1,如果COMP1大于COMP2更大(根据所使用的排序规则的规则)

实施例: compare('ghi', 'ghi')
结果:0

fn: concat( string,string,... ) 返回字符串的串联

例如: concat('XPath ','is ','FUN!')
结果: 'XPath是FUN!'

fn:string- join( (string,string,...) ,sep) 返回通过连接字符串参数,并使用参数九月作为分隔符创建一个字符串

例如:与字符串join(('We', 'are', 'having', 'fun!') ,'“)
结果:“我们有乐趣! “

例如:与字符串join(('We', 'are', 'having', 'fun!')
结果: 'Wearehavingfun!'

例如:与字符串join(() '月')
结果:“”

fn: substring( string,start,len )
fn: substring( string,start )
返回从开始位置到指定长度的字符串。 第一个字符的索引是1,如果长度省略其返回从开始位置的子到端

例如: substring('Beatles',1,4)
结果:“垮掉”

例如: substring('Beatles',2)
结果: 'eatles'

fn:string- length( string )
fn:string- length()
返回指定字符串的长度。 如果没有字符串参数则返回当前节点的字符串值的长度

例如:与字符串length('Beatles')
结果:7

fn:normalize- space( string )
fn:normalize- space()
除去第一位和指定的字符串尾部空格,和取代的白色空间中的所有内部序列与一个并返回结果。 如果没有字符串参数它在当前节点上相同

例如:正常化, space(' The XML ')
结果:“该XML”

fn:normalize- unicode()
fn:upper- case( string ) 字符串参数为大写转换

例如:大写case('The XML')
结果: 'THE XML'

fn:lower- case( string ) 字符串参数转换为小写

例如:较低case('The XML')
结果:“在xml”

fn: translate( string1,string2,string3 ) 通过包含字符串与STRING3字符替换字符转换STRING1

例如: translate('12:30','30','45')
结果:'12:45'

例如: translate('12:30','03','54')
结果:'12:45'

例如: translate('12:30','0123','abcd')
结果: 'BC:DA'

fn:escape- uri( stringURI,esc-res ) 例如:逃生uri("http://example.com/test#car", true()
结果: "http%3A%2F%2Fexample.com%2Ftest#car"

例如:逃生uri("http://example.com/test#car", false()
结果: "http://example.com/test#car"

例如:逃避-URI ("http://example.com/~b b ", false()
结果: "http://example.com/~b%C3%A9b%C3%A9"

fn: contains( string1,string2 ) 如果STRING1包含字符串2则返回true,否则返回false

实施例: contains('XML','XM')
结果:真

fn:starts- with( string1,string2 ) 如果字符串2以string2开始,则返回true,否则返回false

例如:starts- with('XML','X')
结果:真

fn:ends- with( string1,string2 ) 如果字符串2与字符串2结束,则返回true,否则返回false

例如:ends- with('XML','X')
结果:假

fn:substring- before( string1,string2 ) 在它发生之前字符串2返回字符串1的开始

例如:substring- before('12/10','/')
结果: '12'

fn:substring- after( string1,string2 ) 在它出现后字符串2返回字符串1的剩余部分

例如:substring- after('12/10','/')
结果: '10'

fn: matches( string,pattern ) 如果字符串参数的模式匹配,返回true,否则,返回false

例如: matches("Merano", "ran")
结果:真

fn: replace( string,pattern,replace ) 返回由与替换参数替换给定模式创建一个字符串

例如: replace("Bella Italia", "l" , "*")
结果:“要**一个伊达* IA”

例如: replace("Bella Italia", "l" , "")
结果:“比亚Itaia”

fn: tokenize( string,pattern ) 例如: tokenize("XPath is fun", "\s+")
结果: ("XPath", "is" , "fun")

对于任何URI功能

名称 描述
fn:resolve- uri( relative,base )

布尔值的函数

名称 描述
fn: boolean( arg ) 返回一个布尔值的数字,字符串或节点集
fn: not( arg ) 该参数被首先通过将减少到一个布尔值boolean()函数。 返回true如果布尔值是假的,假如果布尔值是true

例如: not(true()
结果:假

fn: true() 返回布尔值true

例如: true()
结果:真

fn: false() 返回布尔值false

例如: false()
结果:假

开启持续时间,日期和时间功能

开启持续时间,日期和时间成分提取功能

名称 描述
fn: dateTime( date,time ) 参数转换为日期和时间
fn:years-from- duration( datetimedur ) 返回表示参数的值的规范词法表示的年分量的整数
fn:months-from- duration( datetimedur ) 返回表示参数的值的规范词法表示月的部件的整数
fn:days-from- duration( datetimedur ) 返回表示参数的值的规范词法表示的天部分的整数
fn:hours-from- duration( datetimedur ) 返回表示参数的值的规范词法表示小时分量的整数
fn:minutes-from- duration( datetimedur ) 返回表示参数的值的规范词法表示的分钟部分的整数
fn:seconds-from- duration( datetimedur ) 返回表示参数的值的规范词法表示秒分量的小数
fn:year-from- dateTime( datetime ) 返回表示在自变量的本地价值与去年部分的整数

例如:年从- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
结果:2005

fn:month-from- dateTime( datetime ) 返回表示在自变量的本地值的月份部分的整数

例如:每月-从- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
结果:01

fn:day-from- dateTime( datetime ) 返回表示在自变量的本地值的天部分的整数

例如:天从- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
结果:10

fn:hours-from- dateTime( datetime ) 返回表示在自变量的本地值的时间分量的整数

例如:小时从- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
结果:12

fn:minutes-from- dateTime( datetime ) 返回表示在自变量的本地值的分钟部分的整数

例如:分钟-从- dateTime(xs:dateTime("2005-01-10T12:30-04:10")
结果:30

fn:seconds-from- dateTime( datetime ) 返回表示在自变量的本地值秒部分的十进制

实施例:秒-从- dateTime(xs:dateTime("2005-01-10T12:30:00-04:10")
结果:0

fn:timezone-from- dateTime( datetime ) 返回如果任何参数的时区组件
fn:year-from- date( date ) 返回表示在自变量的本地值的年份的整数

例如:今年从- date(xs:date("2005-04-23")
结果:2005

fn:month-from- date( date ) 返回表示在自变量的本地值当月的整数

例如:月从- date(xs:date("2005-04-23")
结果:4

fn:day-from- date( date ) 返回表示在自变量的本地值的天整数

例如:天从- date(xs:date("2005-04-23")
结果:23

fn:timezone-from- date( date ) 返回如果任何参数的时区组件
fn:hours-from- time( time ) 返回表示在自变量的本地值的时间分量的整数

例如:小时从- time(xs:time("10:22:00")
结果:10

fn:minutes-from- time( time ) 返回表示在自变量的本地值的分钟部分的整数

例如:分钟-从- time(xs:time("10:22:00")
结果:22

fn:seconds-from- time( time ) 返回表示在自变量的本地值秒部分的整数

实施例:秒-从- time(xs:time("10:22:00")
结果:0

fn:timezone-from- time( time ) 返回如果任何参数的时区组件
fn:adjust-dateTime-to- timezone( datetime,timezone ) 如果时区自变量是空的,它返回datetime没有一个时区。 否则,它返回datetime与时区
fn:adjust-date-to- timezone( date ,timezone ) 如果时区自变量为空,则返回没有时区的日期。 否则,它返回的日期与时区
fn:adjust-time-to- timezone( time ,timezone ) 如果时区自变量是空的,它返回一个时间没有时区。 否则,它返回一个时间与时区

相关的QName功能

名称 描述
fn: QName()
fn:local-name-from- QName()
fn:namespace-uri-from- QName()
fn:namespace-uri-for- prefix()
fn:in-scope- prefixes()
fn:resolve- QName()

上的节点功能

名称 描述
fn: name()
fn: name( nodeset )
返回指定节点集中的当前节点或第一个节点的名称
fn:local- name()
fn:local- name( nodeset )
返回当前节点或指定节点集中的第一个节点的名字 - 没有命名空间前缀
fn:namespace- uri()
fn:namespace- uri( nodeset )
返回当前节点的命名空间URI或所述第一节点指定的节点组
fn: lang( lang ) 如果当前节点的语言指定语言的语言相匹配,则返回true

例如: Lang("en")是真
<P XML:LANG = “EN”> ... </ P>

例如: Lang("de")为假
<P XML:LANG = “EN”> ... </ P>

fn: root()
fn: root( node )
返回到其中当前节点或指定所属的树的根。 这通常是一个文档节点

对序列功能

对序列的一般功能

名称 描述
fn:index- of( (item,item,...) ,searchitem) 返回是等于searchitem论证项目的序列中的位置

例如:指数的((15, 40, 25, 40, 10) ,40)
结果: (2, 4)

例如:指数的(("a", "dog" , "and" , "a" , "duck") “a”)的
结果(1, 4)

例如:指数的((15, 40, 25, 40, 10) ,18)
结果: ()

fn: remove( (item,item,...) ,position) 返回从的项目参数的值构造一个新的序列 - 与由除去位置参数指定的项

例如: remove(("ab", "cd" , "ef") ,0)
结果: ("ab", "cd" , "ef")

例如: remove(("ab", "cd" , "ef") ,1)
结果: ("cd", "ef")

例如: remove(("ab", "cd" , "ef") ,4)
结果: ("ab", "cd" , "ef")

fn: empty( item,item,... ) 如果参数的值是一个空序列,则返回true,否则返回false

例如: empty(remove(("ab", "cd") ,1))
结果:假

fn: exists( item,item,... ) 如果参数的值不是一个空序列,则返回true,否则返回false

例如: exists(remove(("ab") ,1))
结果:假

fn:distinct- values( (item,item,...) ,collation) 仅返回不同(different)

例如:distinct- values((1, 2, 3, 1, 2)
结果: (1, 2, 3)

fn:insert- before( (item,item,...) ,pos,inserts) 返回从的项目参数的值构造一个新的序列 - 由所述POS参数指定的插入位置插入件参数的值

例如:嵌件before(("ab", "cd") ,0, “GH”)
结果: ("gh", "ab" , "cd")

例如:嵌件before(("ab", "cd")如图1所示, “GH”)
结果: ("gh", "ab" , "cd")

例如:嵌件before(("ab", "cd") ,2, “GH”)
结果: ("ab", "gh" , "cd")

例如:嵌件before(("ab", "cd")如图5所示, “GH”)
结果: ("ab", "cd" , "gh")

fn: reverse( (item,item,...) ) 返回指定项目的顺序颠倒

例如: reverse(("ab", "cd" , "ef")
结果: ("ef", "cd" , "ab")

例如: reverse(("ab")
结果: ("ab")

fn: subsequence( (item,item,...) ,start,len) 返回由开始论证,并继续由len参数指定的项目数指定的位置项的顺序。 第一项位于位置1

例如: subsequence(($item1, $item2, $item3,...) ,3)
结果: ($item3, ...)

例如: subsequence(($item1, $item2, $item3, ...) ,2,2)
结果: ($item2, $item3)

fn: unordered( (item,item,...) ) 返回依赖于实现的订单项

这测试序列的基数作用

名称 描述
fn:zero-or- one( item,item,... ) 返回参数,如果它包含零个或一个项目,否则会引发错误
fn:one-or- more( item,item,... ) 返回参数,如果它包含一个或多个项目,否则会引发错误
fn:exactly- one( item,item,... ) 返回参数,如果它正好包含一个项目,否则会引发错误

平等相待,并,交和除

名称 描述
fn:deep- equal( param1,param2,collation ) 返回true如果参数1和参数是深彼此相等,否则返回false

聚合函数

名称 描述
fn: count( (item,item,...) ) 返回节点的数量
fn: avg( (arg,arg,...) ) 返回参数值的平均值

例如: avg((1,2,3)
结果:2

fn: max( (arg,arg,...) ) 返回比别人更大的争论

实施例: max((1,2,3)
结果:3

实施例: max(('a', 'k')
结果: 'K'

fn: min( (arg,arg,...) ) 返回小于其他参数

例如: min((1,2,3)
结果:1

例如: min(('a', 'k')
结果: 'A'

fn: sum( arg,arg,... ) 返回指定节点集的每个节点的数值的总和

生成序列功能

名称 描述
fn: id( (string,string,...) ,node) 返回具有一个ID值等于在字符串参数指定的一个或多个值中的值元素的节点序列
fn: idref( (string,string,...) ,node) 返回具有IDREF值等于在字符串参数指定的一个或多个值中的值的元素或属性的节点序列
fn: doc( URI )
fn:doc- available( URI ) 如果返回true doc()函数返回一个文档节点,否则返回false
fn: collection()
fn: collection( string )

情景功能

名称 描述
fn: position() 返回当前正在处理的节点的索引位置

示例://书[ position() <= 3]
结果:选择前三个book元素

fn: last() 返回在处理节点列表中的项目数量

示例://书[ last() ]
结果:选择最后一本书元素

fn:current- dateTime() 返回当前日期时间(with timezone)
fn:current- date() 返回当前日期(with timezone)
fn:current- time() 返回当前时间(with timezone)
fn:implicit- timezone() 返回隐时区的价值
fn:default- collation() 返回的默认排序规则的价值
fn:static-base- uri() 返回的值基本URI

XSLT的功能

此外,还有以下内置XSLT的功能:

名称 描述
current() 返回当前节点
document() 用于访问外部XML文档中的节点
element- available() 测试指定的元件是否由XSLT处理器支持
format- number() 将数字转换成字符串
function- available() 测试中指定的功能是否被XSLT处理器支持
generate- id() 返回唯一标识指定节点的字符串值
key() 返回使用由指定的索引的节点集<xsl:key>元素
system- property() 返回系统属性值
unparsed-entity- uri() 返回一个解析实体的URI