Как использовать функцию суммы в XPath? - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть XML-файл со следующим содержимым:

<Xavor>
<Dev>
    <Emp>1</Emp>
    <Floor>1</Floor>
    <Salary>1200.4</Salary>
</Dev>
<Dev>
    <Emp>2</Emp>
    <Salary>3100.8</Salary>
</Dev>
<Dev>
    <Emp>3</Emp>
    <Floor>1</Floor>
</Dev>

Я хочу рассчитать сумму зарплат первых двух сотрудников, используя функцию суммы. Я пришел к этому XPath:

sum(/Xavor/Dev[2]/Salary/text())

Но это возвращает только второе значение зарплаты, т.е. 3100.8 !!! Этот XPath работал нормально, когда в зарплатах были только числа с плавающей запятой. Пожалуйста, помогите мне.

Ответы [ 2 ]

10 голосов
/ 02 ноября 2011

Попробуйте это:

sum(/Xavor/Dev[position() &lt;= 2]/Salary/text())
6 голосов
/ 02 ноября 2011

В дополнение к правильному ответу @Rubens Farias, если вы хотите суммировать зарплату всех Dev, для которых указана (числовая) зарплата, используйте:

sum(/*/Dev/Salary[number(.) = number(.)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...