2016-04-09 9 views
0

Bir Yanıt XML'sinde belirli bir düğümü aramak ve bir koşulla eşleşmesine bağlı olarak doğru veya yanlış dönmek istiyorum. XML'in içerdiği çok sayıda öğe değil, yalnızca benzersiz bir düğüm cevabı almak için bunu nasıl yapabilirim?XML'de Xquery getirme öğelerinden yalnızca bir yanıt elde edin

<ns2:func>false</ns2:func> 
<ns2:func>false</ns2:func> 
<ns2:func>true</ns2:func> 

Bunu istemiyorum: XML 3 unsurları $sA_ADS_VerifOutput1/ns0:recordRetrieved yanıt (örneğin) olacak içeriyorsa, bu kodla

for $recordRetrieved in $sA_ADS_VerifOutput1/ns0:recordRetrieved 
     return 
      if ($recordRetrieved/ns0:COD_NRBE_EN = $ent and 
       $recordRetrieved/ns0:DAT <= $dat) 
      then <ns2:func>{ true() }</ns2:func> 
      else <ns2:func>{ false() }</ns2:func 

: Burada

benim Xquery kodudur Ancak, hepsi yanlışsa, <ns2:func>false</ns2:func> beklerim ve en az bir tane doğruysa, yalnızca bir kez <ns2:func>true</ns2:func> beklerim.

where maddesini kullanmayı düşündüm, ancak hiçbir koşul, bu koşulla karşılaşmadığı taktirde yanlış ortaya çıkmam gerekiyor.

Teşekkürler.

cevap

5

Sen istiyorum:

some $recordRetrieved in $sA_ADS_VerifOutput1/ns0:recordRetrieved 
    satisfies ($recordRetrieved/ns0:COD_NRBE_EN = $ent and 
       $recordRetrieved/ns0:DAT <= $dat) 

veya daha basitçe

exists($sA_ADS_VerifOutput1/ns0:recordRetrieved[ 
     ns0:COD_NRBE_EN = $ent and ns0:DAT <= $dat]) 
+0

çok teşekkür ederiz! Bu awsome. –

1

Yinelenen öğeleri ortadan kaldırmak için fn: distinct-values ​​() değerini kullanabilir, ardından bunları gerekli öğelere sarabilirsiniz.

fn:distinct-values(
    for $recordRetrieved in $sA_ADS_VerifOutput1/ns0:recordRetrieved 
    return 
     if ($recordRetrieved/ns0:COD_NRBE_EN = $ent and 
      $recordRetrieved/ns0:DAT <= $dat) 
     then true() 
     else false() 
) ! <ns2:func>{.}</ns2:func> 
İlgili konular