我有以下XML:返回第一个值if语句后真
<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)
有没有什么办法,例如,打破循环,如果声明是真实的时候?
+1,但'[position()= 1]'可以缩短为'[1]' – dirkk 2015-03-02 09:52:54
绝对如此。我选择了详细的语法,因为它可以更容易地进行范围测试调整。 – 2015-03-02 11:03:58