首页 > 解决方案 > XQuery:如何从标签中获取特定值?

问题描述

假设我们有这个 xml:

<question>
    <test id="1">
        <tag k="a" v="1"/>
        <tag k="a" v="2"/>
        <tag k="b" v="3"/>
    </test>
    <test id="2">
        <tag k="a" v="1"/>
        <tag k="a" v="4"/>
        <tag k="b" v="5"/>
    </test>
    <test id="3">
        <tag k="a" v="2"/>
        <tag k="a" v="6"/>
        <tag k="b" v="7"/>
    </test>
</question>

如果 k = "a" AND v = "1",我想返回测试的所有值 v,如下所示:

v="3"
v="5"

到目前为止我的方法:

for $i in //test
where ($i/tag[@k = 'a' and @v = '1'])
return $i/tag/@v

但这是不正确的,因为那是回报:

v="1"
v="2"
v="3"
v="1"
v="4"
v="5"

感谢您的帮助 :)

标签: returnxquerykey-value

解决方案


您可能正在寻找类似的东西

for $i in //test
where  ($i/tag[@k = 'a'][@v="1"])
return $i/tag[@k="b"]/@v

推荐阅读