构造一个XPath查询以根据其子节点的数量过滤节点吗?

时间:2019-01-10 22:38:25

标签: xml xpath xquery

我有以下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 :(得分:4)

使用以下XPath表达式:

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

它选择所有person-group子元素多的所有name元素。


如果要查询所有子元素的数量,可以将上述查询推广到

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