Xpath 短路或
有没有一种方法可以像在C#、Java、JavaScript等语言中那样在XQuery中执行短路or运算符 我有一些XML可以有两种格式:Xpath 短路或,xpath,xquery,Xpath,Xquery,有没有一种方法可以像在C#、Java、JavaScript等语言中那样在XQuery中执行短路or运算符 我有一些XML可以有两种格式: <sometag> <bodytext> <section> <bodytext> <h1>Some html here</h1> <h2>Some more html</h2> </body
<sometag>
<bodytext>
<section>
<bodytext>
<h1>Some html here</h1>
<h2>Some more html</h2>
</bodytext>
</section>
</bodytext>
</sometag>
将返回第一个场景
/sometag/bodytext/*
它将返回第二个场景。如果XQuery处理器或版本支持该函数,则始终可以使用
/sometag/innerst(.//bodytext)/*
。或者/sometag//bodytext[非(.//bodytext)]/*
如果XQuery处理器或版本支持该函数,则始终可以使用/sometag/最内层(.//bodytext)/*
。或者/sometag//bodytext[非(.//bodytext)]/*
您可能需要使用一个简单的if-then-else条件:
let $v1 := /sometag/bodytext/section/bodytext/*
let $v2 := /sometag/bodytext/*
return
if (fn:exists($v1))
then $v1
else (
$v2
)
您可能希望使用简单的if-then-else条件:
let $v1 := /sometag/bodytext/section/bodytext/*
let $v2 := /sometag/bodytext/*
return
if (fn:exists($v1))
then $v1
else (
$v2
)
这看起来很有用,但我认为它在这个场景中不起作用。这看起来很有用,但我认为它在这个场景中不起作用。sometag//bodytext[not(.//bodytext)]/为mesometag工作//bodytext[not(.//bodytext)]/为我工作
let $v1 := /sometag/bodytext/section/bodytext/*
let $v2 := /sometag/bodytext/*
return
if (fn:exists($v1))
then $v1
else (
$v2
)