Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > XML, XSL > Подсчет суммы значений по условию


Автор: oxygenh 7.10.2016, 11:39
Есть XMLина такого вида:
Код

 <SV_PR_GS>
   <OBSV>
     <N_ZAP>1</N_ZAP>
     <MO_SV_V>330104</MO_SV_V>
     <SNILS_V>00268911535</SNILS_V>
     <SVEL_PO_P>
       <C_POKL>2</C_POKL>
       <P_VS>23</P_VS>
       <P_Z1>7</P_Z1>
       <P_Z2>7</P_Z2>
       <P_M1>6</P_M1>
       <P_M2>3</P_M2>
     </SVEL_PO_P>
     <SVEL_PO_P>
       ...
     </SVEL_PO_P>
   </OBSV>
   <PDRSV>
     ...
   <PDRSV>
 </SV_PR_GS>
 <SV_PR_GS>
...
 </SV_PR_GS>
...


Надо написать выражение XPATH для посчитата суммы всех значений <P_VS>, у которых соответствующий "одноуровневый" <C_POKL> = 2.
Моего хилого ума хватило только на такое: 

sum(//SVEL_PO_P/P_VS[C_POKL="2"])

но, конечно же, это неправильно.  А как правильно будет записать требуемое выражение?


Заранее благодарен, Вячеслав.

 

Автор: LSD 7.10.2016, 12:25
Ход мыслей был правильный
Код

sum(/SV_PR_GS/OBSV/SVEL_PO_P[C_POKL=2]/P_VS)

Автор: oxygenh 10.10.2016, 13:29
LSD, вот оно как! Спасибо! Понял. Немного видоизменил с учетом корневого элемента, который забыл упомянуть в вопросе, и всё получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)