Построить запрос XPath, который фильтрует узлы по количеству его дочерних элементов? - PullRequest
0 голосов
/ 11 января 2019

У меня есть следующий XML:

<person-group person-group-type="author">
    <name>
        <surname>Chen</surname>
        <given-names>J-Y</given-names>
    </name>
</person-group>
<person-group person-group-type="author">
    <name>
        <surname>Cisse</surname>
        <given-names>F</given-names>
    </name>
</person-group>
<person-group person-group-type="author">
    <name>
        <surname>Dahou</surname>
        <given-names>T</given-names>
    </name>
    <name>
        <surname>Foucher</surname>
        <given-names>V</given-names>
    </name>
</person-group>

Я пытаюсь создать запрос XPath, который будет возвращать элементы , только если имеет более одного элемента.

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

Спасибо.

1 Ответ

0 голосов
/ 11 января 2019

Используйте следующее выражение XPath:

//person-group[count(name) > 1]

Выбирает все элементы person-group, которые имеют более одного name дочернего элемента.


Если вы хотите запросить сумму всех дочерних элементов , вы можете обобщить приведенный выше запрос до

//person-group[count(*) > 1]
...