如何表示';缺失';XQuery中的标记?
我有一个XML文件:如何表示';缺失';XQuery中的标记?,xquery,Xquery,我有一个XML文件: $xml := <xml> <element> <text>blahblah</text> </element> <element> </element> <element> <text>blahblah</
$xml := <xml>
<element>
<text>blahblah</text>
</element>
<element>
</element>
<element>
<text>blahblah</text>
</element>
</xml>
这给了我一个清单
blahblah
blahblah
没有迹象表明有一个元素没有元素。我想做的是使用一个查询,如果没有这样的元素,它将返回“missing”。我该怎么做?这应该可以:
for $x in $xml/xml/element
return
if (text)
then string(text)
else "missing"
对于字符串序列(第一个答案的稍微修改版本):
或者使用let(对我来说似乎有点干净……但可能只是一打半中的六个):
希望这会有所帮助。是否尝试返回没有子元素的“element”元素?(在您的示例中,这是第二次出现“element”,因为第一个和最后一个包含“text”元素。) 如果是,可以在XPath表达式中使用谓词:
/xml/element[not(*)]
在MarkLogic中
for $e in $xml/xml/element
return ($e/text,"missing")
对于$xml/xml/element中的$e
返回($e/文本,“缺失”)
$xml/element/string((文本,“缺少”)[1])
- XPath表达式中允许使用函数,因此这里不需要显式循环
- 表达式(文本,“缺失”)[1]
- 您可以使用eXist沙盒执行代码段:-
for $e in $xml/xml/element
let $text := string($e/text)
return
if ($text)
then $text
else "missing"
/xml/element[not(*)]
for $e in $xml/xml/element
return ($e/text,"missing")