我尝试选择具有属性名称itemprop
的所有元素,并且whith具有属性itemtype = http://schema.org/Product
的任何级别父级,除了位于具有任何其他属性itemtype
的节点的元素。
示例:
<div itemtype = "http://schema.org/Product" >
<div itemtype = "http://schema.org/BreadcrumbList" >
<div itemprop = "name" > A </div>
<div itemprop = "price" > B </div>
<div itemtype = "http://schema.org/ListItem" >
<div itemprop = "description"> C </div>
</div>
</div>
<div itemprop = "name" > D </div>
<div>
<div>
<div itemprop = "price" > E </div>
</div>
</div>
</div>
我只需要D和E元素,但不需要A,B,C。 我尝试过像这样的事情:
//*[normalize-space(@itemtype) = 'http://schema.org/Product']/descendant::*[not(descendant-or-self::*[@itemtype])][@itemprop]
此字符串完全无效,我的其他尝试也未排除A,B和C元素。
答案 0 :(得分:0)
尝试使用以下表达式,该表达式允许获取具有仅具有itemtype
值的属性"http://schema.org/Product"
的祖先的元素
//div[@itemprop and count(ancestor::*[@itemtype='http://schema.org/Product'])=count(ancestor::*[@itemtype])]