2015-05-05 4 views
0

Я пытаюсь создать утверждение для ответа, который должен выглядеть следующим образом:XQUERY Assertion для нескольких режимов SoapUI

<Names>   
    <NameList PropertyName="Record"> 
      <Names> 
       <SimpleValue Value="Date :xx"/> 
       <SimpleValue Value="Name :xx"/>   
      </Names> 
     </NameList> 
    <NameList PropertyName="Record"> 
      <Names> 
       <SimpleValue Value="Date :xx"/> 
       <SimpleValue Value="Name :xx"/>    
      </Names> 
     </NameList> 
</Names> 

Утверждение должно быть точное соответствие.

Я пришел с XQUERY Assertions, который выглядит так:

declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/'; 
    <Names> 
    { 
    for $x in/Response/NameList/Names/NameList  
    return <NameList> {($x/@PropertyName)} 
    <Names> 
    { 
    for $x in/Response/NameList/Names/NameList/Names/SimpleValue 
    return <SimpleValue>{($x/@Value)} </SimpleValue> 
    } 
    </Names> 
    </NameList> 
    } 
    </Names> 

Но, Это возвращает SimpleValue от каждого узла имен под списком имен. И это выглядит следующим образом:

<Names> 
    <NameList PropertyName="Record"> 
     <Names> 
     <SimpleValue Value="Date:xx"/> 
     <SimpleValue Value="Name:xx"/> 
     <SimpleValue Value="Date:xx"/> 
     <SimpleValue Value="Name:xx"/> 
    </Names> 
    </NameList> 
    <NameList PropertyName="Record"> 
    <Names> 
     <SimpleValue Value="Date:xx"/> 
     <SimpleValue Value="Name:xx"/> 
     <SimpleValue Value="Date:xx"/> 
     <SimpleValue Value="Name:xx"/> 
    </Names> 
    </NameList> 
</Names> 

Можете ли вы помочь? Благодаря

ответ

3

Чтобы ограничить выход, обратитесь к переменной в вашем внешнем контуре:

{ 
for $y in $x/Names/SimpleValue 
return <SimpleValue>{($y/@Value)} </SimpleValue> 
} 
+0

Спасибо! Так оно и было. – Dighate

0

Моя про лицензии в настоящее время истек, поэтому я не могу проверить это, но я уверен, что вам нужно что-то вроде этого:

declare namespace soapenv='http://schemas.xmlsoap.org/soap/envelope/'; 
<Names> 
{ 
    for $x in/Response/NameList/Names/NameList  
    return <NameList> {($x/@PropertyName)} 
    <Names> 
    { 
     for $y in $x/Names/SimpleValue 
     return <SimpleValue>{($y/@Value)} </SimpleValue> 
    } 
    </Names> 
</NameList> 
} 
</Names> 
+0

Спасибо большое !!! – Dighate