XPath的boolean()函数用于将任意类型的输入值转换为布尔型结果,转换规则根据输入值的类型有明确的定义,不同类型的输入会得到不同的布尔结果,是XPath中处理条件判断的核心函数之一。

boolean()函数的转换规则
boolean()函数对不同类型的输入值转换规则如下:
1. 数字类型
如果输入是数字,只有当数字不等于0且不是NaN时,转换结果为true,否则为false。具体规则:
- 数字为0或-0时,结果为false
- 数字为NaN时,结果为false
- 其他所有数字(包括正数、负数、小数)结果都为true
2. 字符串类型
如果输入是字符串,只有当字符串长度大于0时,转换结果为true,空字符串结果为false。
3. 节点集类型
如果输入是节点集,只要节点集包含至少一个节点,转换结果为true,空节点集结果为false。
4. 布尔类型
如果输入本身已经是布尔值,直接返回该布尔值,不做额外转换。
转换示例
以下是通过XPath表达式测试不同输入值的转换结果示例:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<num>0</num>
<num>10</num>
<num>NaN</num>
<str></str>
<str>hello</str>
<empty></empty>
</root>
对应的XPath测试表达式及结果:
// 数字类型测试
boolean(0) // 结果:false
boolean(10) // 结果:true
boolean(-5.2) // 结果:true
boolean(NaN) // 结果:false
// 字符串类型测试
boolean('') // 结果:false
boolean('xpath') // 结果:true
boolean(' ') // 结果:true(空格属于非空字符串)
// 节点集类型测试
boolean(//num) // 结果:true(存在num节点)
boolean(//not_exist)// 结果:false(不存在对应节点)
// 布尔类型测试
boolean(true()) // 结果:true
boolean(false()) // 结果:false
实际应用场景
boolean()函数最常用于XPath的条件判断场景中,比如在select、if等表达式中作为判断条件:
// 筛选包含子节点的item元素 //item[boolean(*)] // 判断price节点的值是否不为0 //book[boolean(price > 0)] // 结合if函数使用,当name节点存在时返回名称,否则返回默认值 if(boolean(//name), //name, '默认名称')
注意事项
在使用boolean()函数时需要注意,XPath中很多操作会自动进行布尔转换,比如位置路径本身作为条件时就会自动调用boolean()函数,不需要手动包裹。例如//item[price]等价于//item[boolean(price)],两者的判断逻辑一致。
另外要注意不同XPath版本对boolean()函数的支持是一致的,无论是XPath 1.0还是更高版本,上述转换规则都适用,开发者可以放心使用。
XPathboolean()函数布尔型转换XPath函数修改时间:2026-06-27 17:42:15