Есть ли способ подсчитать количество узлов, учитывая, что условие узла-брата является истинным? - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь подсчитать количество узлов, которые существуют, если выполнено условие в узле-брате.

Я пробовал несколько комбинаций XPath, но я не уверен, что это возможно.

<ab:Person>
    <ab:Gender ab:Descriptor="Girl">
    </ab:Gender>
    <ab:body>
        <ab:finger>1</ab:finger>
    </ab:body>
    <ab:body>
        <ab:finger>2</ab:finger>
    </ab:body>
    <ab:body>
        <ab:finger>3</ab:finger>
    </ab:body>
</ab:Person>

<ab:Person>
    <ab:Gender ab:Descriptor="Boy">
    </ab:Gender>
    <ab:body>
        <ab:finger>4</ab:finger>
    </ab:body>
    <ab:body>
        <ab:finger>5</ab:finger>
    </ab:body>
</ab:Person>

Я хочу посчитать количество узлов для каждого пола - т.е. считать (ab: finger, учитывая, что ab: Person / ab: Gender ab: Descriptor = "Boy") и (ab: finger, учитывая, что ab: Персона / ab: Пол ab: Descriptor = "Girl").

Мой желаемый вывод для двух указанных выше функций xpath будет 2 и 3 ... так как число узлов ab: finger, которые существуют для "Boy", равно 2, а "Girl" равно 3.

Пожалуйста, дайте мне знать, если вопрос не имеет смысла - я могу остановиться подробнее!

1 Ответ

0 голосов
/ 14 июня 2019

Если бы было различное количество полов, то это стало бы проблемой группировки. Но если их всего два, то все очень просто:

count(ab:Person[ab:Gender/@ab:Descriptor="Boy"]/ab:body/ab:finger)

count(ab:Person[ab:Gender/@ab:Descriptor="Girl"]/ab:body/ab:finger)
...