小编Mar*_*art的帖子

使用XQuery/XPath获取元素父节点的属性值

鉴于此xml文档:

<?xml version="1.0" encoding="UTF-8"?>
    <mydoc>
        <foo f="fooattr">
            <bar r="barattr1">
                <baz z="bazattr1">this is the first baz</baz>
            </bar>
            <bar r="barattr2">
                <baz z="bazattr2">this is the second baz</baz>
            </bar>
        </foo>
    </mydoc>
Run Code Online (Sandbox Code Playgroud)

正在由此xquery处理:

let $d := doc('file:///Users/mark/foo.xml')
let $barnode := $d/mydoc/foo/bar/baz[contains(@z, '2')]
let $foonode := $barnode/../../@f
return $foonode
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"Cannot create an attribute node (f) whose parent is a document node". 
Run Code Online (Sandbox Code Playgroud)

似乎../操作有点从文档的其余部分中删除匹配的节点,使得它认为它是文档节点.

我对其他方法持开放态度,但父选择取决于包含某个子字符串的子属性.

干杯!

xpath xquery

20
推荐指数
1
解决办法
3万
查看次数

标签 统计

xpath ×1

xquery ×1