如果是空序列,我试图返回“Empty”,如果不是,则返回“NotEmpty”。让我们说,
for $family in doc("gedcom.xml") /*/FamilyRec
where $family/Child/Link[@Ref = "IN006"]
return if(empty(data($family))) then "Empty" else "NotEmpty"
我得到氧气的结果:NotEmpty 这是好的。
但是,让我们说,IN005没有价值
for $family in doc("gedcom.xml") /*/FamilyRec
where $family/Child/Link[@Ref = "IN005"]
return if(empty(data($family))) then "Empty" else "NotEmpty"
然后它应该打印:空
但不是打印“空”而是
引擎名称:Saxon-EE XQuery 9.3.0.5 严重性:警告 描述:您的查询返回一个空序列。
任何人都可以帮助我。在此先感谢。
答案 0 :(得分:1)
如果我正确理解了这个问题,我认为问题是你的where子句会过滤掉你正在寻找的值:如果“IN005”不存在那么它将永远不会到达return子句。 / p>
相反,你不应该有一个where子句并在返回中进行检查:
for $family in doc("gedcom.xml") /*/FamilyRec
return if($family/Child/Link[@Ref = "IN005"]) then "NotEmpty" else "Empty"
答案 1 :(得分:0)
如果是空序列,我试图返回“Empty”,如果不是,则尝试返回“NotEmpty”。
什么是“它”?
我无法确切地知道你的要求是什么,但听起来像是:
let $result :=
for ...
where ...
return ...
return (if empty($result) then "Empty" else "Not Empty")