Xpath获取仅包含特定类型节点的节点

时间:2016-06-01 10:32:38

标签: xpath

拿这个(id属性只添加,所以我可以在下面引用它们)

<div id="one">
   <figure>foo</figure>
   <figure>bar</figure>
</div>
<div id="two">
   <figure>foo</figure>
   <div>bar</div>
</div>
<div id="three">
   <div>bar</div>
</div>

如何选择其子元素所有 div元素的所有figure元素,即仅在给定示例中选择div 1?

我需要//div[count(not figure)>0]

2 个答案:

答案 0 :(得分:1)

这是一种可能的方式:

SELECT SUM(amount) as tdb 
FROM v_ledger_details
WHERE `debit_credit` = 'DB' 
AND accountId = '944'
AND 
(
    (transaction_type_id IN (4,5) and billDate < '2016-06-01') OR
    (transaction_type_id NOT IN (4,5) AND postingDate < '2016-06-01')
)

//div[not(*[name() != 'figure']) and not(text()[normalize-space()])] 的左侧确保and没有名为“figure”的子元素,右侧确保它没有非空子项文本节点。

或使用div的相同方法:

count()

答案 1 :(得分:0)

我是这样做的:

//div[figure][count(figure) = count(*)]

这会找到必须包含至少一个figure的div,然后检查figure元素的数量是否与所有其他元素的计数匹配;如果这是真的那么它就不能包含任何其他内容。