XQuery 表达式根据属性比较返回项目
XQuery expression to reutrn items based on comparison on their attributes
假设 XML 是
<s>
<e id="2" role="x">
<e id="3" role="y">
</s>
<s>
<e id="2" role="y">
<e id="3" role="x">
</s>
我正在寻找 return 所有 s
的 XQuery,其中它们具有元素 e[@role="x"]
和元素 e[@role="y"]
作为任何后代和第一个元素 id
小于第二个元素id.
例如在上面的例子中,它应该只有 return 第一个 s
只要每个角色不超过一个,这就有效:
let $d := (
<s>
<e id="2" role="x"/>
<e id="3" role="y"/>
</s>,
<s>
<e id="2" role="y"/>
<e id="3" role="x"/>
</s>
)
return (
$d/descendant-or-self::s[.//e[@role="x"] and .//e[@role="y"] and
.//e[@role="x"]/xs:integer(@id) < .//e[@role="y"]/xs:integer(@id)]
)
假设 XML 是
<s>
<e id="2" role="x">
<e id="3" role="y">
</s>
<s>
<e id="2" role="y">
<e id="3" role="x">
</s>
我正在寻找 return 所有 s
的 XQuery,其中它们具有元素 e[@role="x"]
和元素 e[@role="y"]
作为任何后代和第一个元素 id
小于第二个元素id.
例如在上面的例子中,它应该只有 return 第一个 s
只要每个角色不超过一个,这就有效:
let $d := (
<s>
<e id="2" role="x"/>
<e id="3" role="y"/>
</s>,
<s>
<e id="2" role="y"/>
<e id="3" role="x"/>
</s>
)
return (
$d/descendant-or-self::s[.//e[@role="x"] and .//e[@role="y"] and
.//e[@role="x"]/xs:integer(@id) < .//e[@role="y"]/xs:integer(@id)]
)