XPath - 选择所有仅属于子类型的节点

时间:2014-05-26 19:24:55

标签: xml xslt xpath xml-parsing lxml

我有类似的东西:

<fieldset>
    <field name='field1'></field>
</fieldset>
<fieldset>
    <field name='field2'></field>
    <field name='field3'></field>
</fieldset>
<fieldset>
    <field name='field4'></field>
    <text></text>
</fieldset>

我想选择所有field个节点,这些节点只是field类型的子节点。

IE中。 field1匹配,field4也匹配(text节点不属于field类型。)

我无法使用sibling使其正常工作,而且:

//fieldset/field[not(count(../field))>1]

1 个答案:

答案 0 :(得分:3)

您可以使用//fieldset[count(field)=1]/field xpath表达式。

使用xmllint进行演示:

$ xmllint input.xml --xpath '//fieldset[count(field)=1]/field'
<field name="field1"/>
<field name="field4"/>