Короче говоря, я пытаюсь сделать это: суммировать дочерние элементы в моем случае «Приоритет», но исключая других дочерних элементов с фильтром на основе конкретного текста внутри него.Мой Xml
<?xml version="1.0" encoding="UTF-8"?>
<Test>
<MODELS>
<MODEL>
<MODELATTRIBUTES>
<INSTANCE id="obj.22519" class="Ambulance" name="Ambulance-42632">
<ATTRIBUTE name="Position" type="STRING">NODE x:9.5cm y:10.5cm w:1cm h:1.5cm index:66</ATTRIBUTE>
<ATTRIBUTE name="External tool coupling" type="STRING"></ATTRIBUTE>
<ATTRIBUTE name="Priority" type="INTEGER">20</ATTRIBUTE>
<ATTRIBUTE name="Direction" type="ENUMERATION">Vertical</ATTRIBUTE>
</INSTANCE>
<INSTANCE id="obj.22525" class="Police car" name="Police car-42638">
<ATTRIBUTE name="Position" type="STRING">NODE x:9.5cm y:12.5cm w:1cm h:1cm index:68</ATTRIBUTE>
<ATTRIBUTE name="External tool coupling" type="STRING"></ATTRIBUTE>
<ATTRIBUTE name="Availability" type="ENUMERATION">Free</ATTRIBUTE>
<ATTRIBUTE name="Priority" type="INTEGER">60</ATTRIBUTE>
<ATTRIBUTE name="Direction" type="ENUMERATION">Vertical</ATTRIBUTE>
</INSTANCE>
<INSTANCE id="obj.22595" class="Car" name="Car-22595">
<ATTRIBUTE name="Position" type="STRING">NODE x:3cm y:7cm w:1.5cm h:1cm index:88</ATTRIBUTE>
<ATTRIBUTE name="External tool coupling" type="STRING"></ATTRIBUTE>
<ATTRIBUTE name="Priority" type="INTEGER">2</ATTRIBUTE>
<ATTRIBUTE name="Direction" type="ENUMERATION">Horizontal</ATTRIBUTE>
</INSTANCE>
</MODELATTRIBUTES>
</MODEL>
</MODELS>
</Test>
Я на самом деле могу суммировать все значения приоритетов, например:
sum(//*[@name='Priority'][@type='INTEGER'])
Я получаю
82
но я хочу разделить итоговый результат по вертикали и горизонтали на основе
<ATTRIBUTE name="Direction" type="ENUMERATION">Vertical</ATTRIBUTE>
и
<ATTRIBUTE name="Direction" type="ENUMERATION">Horizontal</ATTRIBUTE>
, так как я могу отфильтровать приоритет "Horzontal", чтобыв итоге я получаю только 80 в качестве окончательного результата для «Вертикальных приоритетов»?
Я пробовал этот подход, но он не работает
sum(//*[@name='Priority'][@type='INTEGER'] [not(//*[text()='Horizontal'])])
Любая Помощь действительно ценится,спасибо