前言: 接上一篇的介绍,本节研究一下Path,路径表达式。
简单的路径表达式
表达式 | 说明 |
---|---|
doc(“catalog.xml”)/catalog | 返回catalog 为根元素的文档 |
doc(“catalog.xml”)//product | 返回所有product 元素 |
doc(“catalog.xml”)//product/@dept | 返回product 元素的dept属性 |
doc(“catalog.xml”)/catalog/* | 返回catalog 的所有子元素 |
带命名空间
查询需要显示说明命名空间:
declare namespace prod="http://marklogic.com/prod";
doc("/product/product_ns.xml")//prod:name
简写语法
原始写法 | 简化写法 |
---|---|
child::product | product |
child::* | * |
seld::node() | . |
attribute::dept | @dept |
descendant::product | .//product |
child::product/descendant::name | product//name |
parent::node()/number | ../number |
复杂路径表达式
表达式基于doc(“catalog.xml”)/catalog/
表达式 | 说明 |
---|---|
proruct/(number | name) |
product/(* except number) | 返回product 下除了number 子元素 |
product/(if)(desc) then desc else name | 遍历product 元素,返回desc 或者name 节点 |
product/substring(name,1,10) | 对product 的子节点name 进行函数操作 |
带条件的路径表达式
表达式基于doc(“catalog.xml”)/catalog/
表达式 | 说明 |
---|---|
product[name=”连衣裙”] | 返回匹配name 的product 元素 |
product[number <10000] | 返回匹配number 的product 元素 |
product[@dept=”南极人”] | 返回匹配属性dept 的product 元素 |
product[desc] | 返回含有子节点desc 的product 元素 |
product[@dept] | 返回含有属性dept 的product 元素 |
带位置的路径表达式
表达式基于doc(“catalog.xml”)/catalog/
表达式 | 说明 |
---|---|
product[2] | 返回catalog 的第二个product 子节点 |
product[position() = 2] | 同上 |
product[position() > 1] | 返回catalog 的第一个product 子节点之后的元素 |
product[last()-1] | 返回catalog 的倒数第二个product 子节点 |
product[last()] | 返回catalog 的最后一个product 子节点 |
*[2] | 返回catalog 的第二个子节点 |