【发布时间】:2015-03-02 08:10:58
【问题描述】:
我有以下 xml:
<test>
<TestStruktur>
<TestReference>ID_text_random_uuid</TestReference>
<TestReference>ID_test_random_uuid</TestReference>
<Name>Some name</Name>
</TestStruktur>
<TestStruktur>
<TestReference>ID_test_random_uuid</TestReference>
<TestReference>ID_text_random_uuid</TestReference>
<Name>Some name</Name>
</TestStruktur>
</test>
我需要搜索 TestReference 元素并检查值是否包含 test 字符串,然后从 <Name> 元素返回值。我创建了执行此操作的 xquery,但它返回两个值,因为该语句对于两个节点都是正确的。
当然这只是一个示例 xml。我可以有很多 TestStruktur 节点,甚至更多 TestReference 节点
这是我的 xquery:
declare function local:test($doc as node()) as xs:string {
for $test2 in $doc//test/TestStruktur
for $test in $test2/TestReference
return
if(contains($test, 'test')) then
data($test2/Name)
else ()
};
for $doc in collection('Testing')
return local:test($doc)
有什么方法可以在if语句为真时中断循环?
【问题讨论】: