xquery空序列如何处理
如果是空序列,我尝试返回“Empty”,如果不是,则返回“NotEmpty”。比方说xquery空序列如何处理,xquery,saxon,Xquery,Saxon,如果是空序列,我尝试返回“Empty”,如果不是,则返回“NotEmpty”。比方说 for $family in doc("gedcom.xml") /*/FamilyRec where $family/Child/Link[@Ref = "IN006"] return if(empty(data($family))) then "Empty" else "NotEmpty" 我在氧气中得到结果:不空 没关系 但比方说,IN005没有任何价值 for $family in doc("gedc
for $family in doc("gedcom.xml") /*/FamilyRec
where $family/Child/Link[@Ref = "IN006"]
return if(empty(data($family))) then "Empty" else "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
严重性:警告
描述:查询返回的序列为空
谁能帮帮我吗。提前感谢。如果我正确理解了这个问题,我认为问题在于where子句将过滤掉您要查找的值:如果“IN005”不存在,那么它将永远不会到达return子句 相反,您不应该使用where子句并在返回中进行检查:
for $family in doc("gedcom.xml") /*/FamilyRec
return if($family/Child/Link[@Ref = "IN005"]) then "NotEmpty" else "Empty"
如果是空序列,我尝试返回“Empty”,如果不是,则返回“NotEmpty”
什么是“它”
我很难准确了解您的要求,但我觉得:
let $result :=
for ...
where ...
return ...
return (if empty($result) then "Empty" else "Not Empty")
如果FamilyRec有多个事件(ley说3),它将打印NotEmpty NotEmpty NotEmpty。。。对具有(潜在)子元素的元素应用data()函数似乎相当可疑。你说的“空”到底是什么意思?