Moa*_*oak 2 string conditional xquery
我正在尝试学习来自php背景的xQuery,我让这个表达式按预期工作
<![CDATA[
declare variable $doc as node() external;
declare variable $id external;
let $cont := data($doc//div[@class="cont"])
let $title := data($doc//p[@class="vtitle"])
let $text := data($doc//div[@class="venue-cont-left"])
return
<venue id="{$id}">
<title>{$title}</title>
<text>{$text}</text>
</venue>
]]>
Run Code Online (Sandbox Code Playgroud)
但是现在我只是想检查天气$ title是否为空
<![CDATA[
declare variable $doc as node() external;
declare variable $id external;
if(empty(data($doc//p[@class="vtitle"]))) then
(
let $id :=$id
return
<venue id="{$id}" />
) else (
let $cont := data($doc//div[@class="cont"])
let $title := data($doc//p[@class="vtitle"])
let $text := data($doc//div[@class="venue-cont-left"])
return
<venue id="{$id}">
<title>{$title}</title>
<text>{$text}</text>
</venue>
)
]]>
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我得到了这个结果输出
<venue id="4">
<title/>
<text>
PHONE:
ADDRESS:....
Run Code Online (Sandbox Code Playgroud)
如你所见,场地4没有标题所以它本应该被退回 <venue id="4" />
谢谢你的帮助!
小智 7
使用:
declare variable $doc as node() external;
declare variable $id external;
declare variable $title := data($doc//p[@class="vtitle"]);
<venue id="{$id}">{
if ($title)
then <title>{$title}</title>
else (),
<text>{data($doc//div[@class="venue-cont-left"])}</text>
}</venue>
Run Code Online (Sandbox Code Playgroud)
注意:空序列有效布尔值为false.