XML 教程

XML 教程 XML 简介 XML 用途 XML 树结构 XML 语法 XML 元素 XML 属性 XML 命名空间 XML Display XML HttpRequest XML Parser XML DOM XML XPath XML XSLT XML XQuery XML XLink XML 验证器 XML DTD XML Schema XML 服务器 XML 实例 XML 测验

XML AJAX

AJAX 简介 AJAX XMLHttp AJAX 请求 AJAX 响应 AJAX XML 文件 AJAX PHP AJAX ASP AJAX 数据库 AJAX 应用程序 AJAX 实例

XML DOM

DOM 简介 DOM 节点 DOM 访问节点 DOM 节点信息 DOM 节点列表 DOM 节点遍历 DOM 节点导航 DOM 获取节点 DOM 更改节点 DOM 删除节点 DOM 替换节点 DOM 创建节点 DOM 添加节点 DOM 克隆节点 DOM 实例

XPath 教程

XPath 简介 XPath 节点 XPath 语法 XPath 轴(Axes) XPath 运算符 XPath 实例

XSLT 教程

XSLT 简介 XSL 语言 XSLT 转换 XSLT <template> XSLT <value-of> XSLT <for-each> XSLT <sort> XSLT <if> XSLT <choose> XSLT Apply XSLT 客户端 XSLT 服务端 XSLT 编辑 XML XSLT 实例

XQuery 教程

XQuery 简介 XQuery 实例 XQuery FLWOR 表达式 XQuery FLWOR + HTML XQuery 术语 XQuery 语法 XQuery 添加元素和属性 XQuery 选择和过滤 XQuery 函数

XML DTD

DTD 简介 DTD 构建模块 DTD 元素 DTD 属性 DTD 元素 vs. 属性 DTD 实体 DTD 实例

XSD Schema

XSD 简介 XSD How To XSD <schema> XSD 元素 XSD 属性 XSD 限制

XSD Complex

XSD 复杂元素 XSD 空元素 XSD 仅限元素 XSD 纯文本元素 XSD 混合 XSD 指示器 XSD <any> XSD <anyAttribute> XSD 替换 XSD 实例

XSD 数据类型

XSD 字符串 XSD 日期 XSD 数值 XSD 杂项 XSD 参考手册

Web Services

XML Services 简介 XML WSDL XML SOAP XML RDF XML RSS

参考手册

DOM 节点类型 DOM 节点 DOM NodeList DOM NamedNodeMap DOM 文档 DOM 元素 DOM 属性 DOM 文本 DOM CDATA DOM 注释 DOM XMLHttpRequest DOM 解析器 XSLT 元素 XSLT/XPath 函数


XSLT, XPath, and XQuery 函数

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


函数参考

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

提示: 函数通常以 fn: 前缀调用,例如 fn:string()。 但是由于 fn: 是命名空间的默认前缀,所以函数名在调用时不需要加前缀。

Accessor 访问器函数

名称 描述
fn:node-name(node) 返回参数节点的节点名
fn:nilled(node) 返回一个布尔值,指示参数节点是否为空
fn:data(item.item,...) 获取一个项目序列并返回一个原子值序列
fn:base-uri()
fn:base-uri(node)
返回当前或指定节点的base-uri属性值
fn:document-uri(node) 返回指定节点的document-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'), 'Error: Price is too high')

Result: Returns http://example.com/test#toohigh and the string "Error: Price is too high" to the external processing environment

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) 返回大于 number 参数的最小整数

示例: ceiling(3.14)
结果: 4

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

示例: floor(3.14)
结果: 3

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

示例: round(3.14)
结果: 3

fn:round-half-to-even() 示例: round-half-to-even(0.5)
结果: 0

示例: round-half-to-even(1.5)
结果: 2

示例: round-half-to-even(2.5)
结果: 2

字符串函数

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

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

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

示例: codepoints-to-string((84, 104, 233, 114, 232, 115, 101))
结果: 'Thérèse'

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

示例: string-to-codepoints("Thérèse")
结果: (84, 104, 233, 114, 232, 115, 101)

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

示例: compare('ghi', 'ghi')
结果: 0

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

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

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

示例: string-join(('We', 'are', 'having', 'fun!'), ' ')
结果: ' We are having fun! '

示例: string-join(('We', 'are', 'having', 'fun!'))
结果: 'Wearehavingfun!'

示例:string-join((), 'sep')
结果: ''

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

示例: substring('Beatles',1,4)
结果: 'Beat'

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

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

示例: string-length('Beatles')
结果: 7

fn:normalize-space(string)
fn:normalize-space()
从指定字符串中删除前导和尾随空格,并将所有内部空格序列替换为 1 并返回结果。 如果没有字符串参数,则在当前节点上执行相同的操作

示例: normalize-space(' The   XML ')
结果: 'The XML'

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

示例: upper-case('The XML')
结果: 'THE XML'

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

示例: lower-case('The XML')
结果: 'the xml'

fn:translate(string1,string2,string3) 通过将 string2 中的字符替换为 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) 示例: escape-uri("http://example.com/test#car", true())
结果: "http%3A%2F%2Fexample.com%2Ftest#car"

示例: escape-uri("http://example.com/test#car", false())
结果: "http://example.com/test#car"

示例: escape-uri ("http://example.com/~bébé", false())
结果: "http://example.com/~b%C3%A9b%C3%A9"

fn:contains(string1,string2) 如果 string1 包含 string2,则返回 true,否则返回 false

示例: contains('XML','XM')
结果: true

fn:starts-with(string1,string2) 如果 string1 以 string2 开头,则返回 true,否则返回 false

示例: starts-with('XML','X')
结果: true

fn:ends-with(string1,string2) 如果 string1 以 string2 结尾,则返回 true,否则返回 false

示例: ends-with('XML','X')
结果: false

fn:substring-before(string1,string2) 在 string2 出现之前返回 string1 的开始

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

fn:substring-after(string1,string2) 返回 string1 中出现 string2 后的剩余部分

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

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

示例: matches("Merano", "ran")
结果: true

fn:replace(string,pattern,replace) 返回通过用替换参数替换给定模式创建的字符串

示例: replace("Bella Italia", "l", "*")
结果: 'Be**a Ita*ia'

示例: replace("Bella Italia", "l", "")
结果: 'Bea Itaia'

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

anyURI 的函数

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

布尔值函数

名称 描述
fn:boolean(arg) 返回数字、字符串或节点集的布尔值
fn:not(arg) 通过应用 boolean() 函数,首先将参数简化为布尔值。 如果布尔值为假,则返回真,如果布尔值为真,则返回假

示例: not(true())
结果: false

fn:true() 返回布尔值 true

示例: true()
结果: true

fn:false() 返回布尔值 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) 返回一个整数,表示参数本地化值中的年份分量

示例: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
结果: 2005

fn:month-from-dateTime(datetime) 返回一个整数,该整数表示参数的本地化值中的月份分量

示例: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
结果: 01

fn:day-from-dateTime(datetime) 返回一个整数,该整数表示参数的本地化值中的天分量

示例: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
结果: 10

fn:hours-from-dateTime(datetime) 返回一个整数,表示参数的本地化值中的小时分量

示例: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
结果: 12

fn:minutes-from-dateTime(datetime) 返回一个整数,表示参数的本地化值中的分钟分量

示例: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10"))
结果: 30

fn:seconds-from-dateTime(datetime) 返回一个小数,表示参数的本地化值中的秒分量

示例: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10"))
结果: 0

fn:timezone-from-dateTime(datetime) 返回参数的时区分量(如果有)
fn:year-from-date(date) 返回一个整数,表示参数的本地化值中的年份

示例: year-from-date(xs:date("2005-04-23"))
结果: 2005

fn:month-from-date(date) 返回一个整数,表示参数的本地化值中的月份

示例: month-from-date(xs:date("2005-04-23"))
结果: 4

fn:day-from-date(date) 返回一个整数,表示参数的本地化值中的日期

示例: day-from-date(xs:date("2005-04-23"))
结果: 23

fn:timezone-from-date(date) 返回参数的时区分量(如果有)
fn:hours-from-time(time) 返回一个整数,表示参数的本地化值中的小时分量

示例: hours-from-time(xs:time("10:22:00"))
结果: 10

fn:minutes-from-time(time) 返回一个整数,表示参数的本地化值中的分钟分量

示例: minutes-from-time(xs:time("10:22:00"))
结果: 22

fn:seconds-from-time(time) 返回一个整数,表示参数的本地化值中的秒分量

示例: seconds-from-time(xs:time("10:22:00"))
结果: 0

fn:timezone-from-time(time) 返回参数的时区分量(如果有)
fn:adjust-dateTime-to-timezone(datetime,timezone) 如果 timezone 参数为空,则返回没有时区的 dateTime。 否则,它返回一个带有时区的 dateTime
fn:adjust-date-to-timezone(date,timezone) 如果 timezone 参数为空,则返回没有时区的日期。 否则,它返回带有时区的日期
fn:adjust-time-to-timezone(time,timezone) 如果 timezone 参数为空,则返回没有时区的时间。 否则,它返回一个带时区的时间

与 QNames 相关的函数

名称 描述
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") is true for
<p xml:lang="en">...</p>

示例: Lang("de") is false for
<p xml:lang="en">...</p>

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

序列上的函数

序列的一般函数

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

示例: index-of ((15, 40, 25, 40, 10), 40)
结果: (2, 4)

示例: index-of (("a", "dog", "and", "a", "duck"), "a")
Result (1, 4)

示例: index-of ((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))
结果: false

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

示例: exists(remove(("ab"), 1))
结果: false

fn:distinct-values((item,item,...),collation) Returns only distinct (different) values

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

fn:insert-before((item,item,...),pos,inserts) 返回从 item 参数的值构造的新序列 - inserts 参数的值插入到 pos 参数指定的位置

示例: insert-before(("ab", "cd"), 0, "gh")
结果: ("gh", "ab", "cd")

示例: insert-before(("ab", "cd"), 1, "gh")
结果: ("gh", "ab", "cd")

示例: insert-before(("ab", "cd"), 2, "gh")
结果: ("ab", "gh", "cd")

示例: insert-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) 从 start 参数指定的位置返回一系列项目,并继续 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) 如果 param1 和 param2 彼此深度相等,则返回 true,否则返回 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) 如果 doc() 函数返回一个文档节点,则返回 true,否则返回 false
fn:collection()
fn:collection(string)
 

上下文函数

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

示例: //book[position()<=3]
结果: Selects the first three book elements

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

示例: //book[last()]
结果: Selects the last book element

fn:current-dateTime() 返回当前日期时间(带时区)
fn:current-date() 返回当前日期(带时区)
fn:current-time() 返回当前时间(带时区)
fn:implicit-timezone() 返回隐式时区的值
fn:default-collation() 返回默认排序规则的值
fn:static-base-uri() 返回base-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