Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 短路或_Xpath_Xquery - Fatal编程技术网

Xpath 短路或

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

有没有一种方法可以像在C#、Java、JavaScript等语言中那样在XQuery中执行短路or运算符

我有一些XML可以有两种格式:

<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
  )