MarkLogic学习——XPath中的text()和string()区别
来源:互联网 发布:淘宝积分兑换优惠券 编辑:程序博客网 时间:2024/05/22 03:24
摘要: 在XPath中,经常使用text()和string(),而我一般都是想到哪个用哪个,究竟他们之间有什么不同,没有在意过。
本质区别
text()是一个node test,而string()是一个函数,data()是一个函数且可以保留数据类型。此外,还有点号(.)表示当前节点。
使用要点
XML例子: <book><author>Tom John</author></book>
特殊用例
XML例子:
<book> <author>Tom <em>John</em> cat</author> <pricing> <price>20</price> <discount>0.8</discount> </pricing></book>
text()
经常在XPath表达式的最后看到text(),它仅仅返回所指元素的文本内容。
let $x := book/author/text()return $x
返回的结果是Tom cat,其中的John不属于author
直接的节点内容。
string()
string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。
let $x := book/author/string()return $x
返回的内容是”Tom John cat”
data()
大多数时候,data()函数和string()函数通用,而且不建议经常使用data()函数,有数据表明,该函数会影响XPath的性能。
let $x := book/pricing/string()return $x
返回的是200.8
let $x := book/pricing/data()return $x
这样将返回分开的20和0.8,他们的类型并不是字符串而是xs:anyAtomicType,于是就可以使用数学函数做一定操作。
let $x := book/pricing/price/data()let $y := book/pricing/discount/data()return $x*$y
比如上面这个例子,就只能使用data(),不能使用text()或 string(),因为XPath不支持字符串做数学运算。
总结
text()不是函数,XML结构的细微变化,可能会使得结果与预期不符,应该尽量少用,data()作为特殊用途的函数,可能会出现性能问题,如无特殊需要尽量不用,string()函数可以满足大部分的需求。
0 0
- MarkLogic学习——XPath中的text()和string()区别
- XPath中的text()和string()区别
- Marklogic学习 由浅入深(3)—— XML、XPath、XQuery
- Marklogic学习 由浅入深(A)—— Marklogic与MongoDB区别
- Marklogic学习 由浅入深(2)—— 安装Marklogic Server
- Marklogic学习 由浅入深(B)—— Marklogic vs. Hadoop
- Marklogic学习 由浅入深(D)—— Marklogic vs. Oracle
- Marklogic学习 —— 灵活的数据模型
- Marklogic学习 —— XQuery语法
- Marklogic学习 —— 日志Log处理
- Marklogic学习 —— XQuery语法基础
- Marklogic学习 —— ACID事务
- Marklogic学习 —— 安装Marklogic9
- Marklogic学习 由浅入深(7)—— Marklogic应用开发指引
- Marklogic学习 由浅入深(8)—— 第一个Marklogic应用(上)
- Marklogic学习 由浅入深(9)—— 第一个Marklogic应用(中)
- Marklogic学习 由浅入深(10)—— 用Eclipse写Marklogic程序
- Marklogic学习 由浅入深(11)—— 第一个Marklogic应用(下)
- SCU
- jQuery学习笔记(2)--table标签切换
- 九度OJ学习笔记 题目1156
- Linux文件打包与压缩
- Qt VS2013_Qt_Redis的配置
- MarkLogic学习——XPath中的text()和string()区别
- 使用Visual Studio 2017作为Linux C++开发工具
- cookie实现自动登陆原理
- warmup2
- 谷哥的小弟学后台(40)——MyBatis输出映射resultType以及resultMap
- 小马的数列
- Nginx源码结构
- js数组赋值:不修改原数组,返回新的数组 。
- Linux文件系统操作与磁盘管理