У меня есть фрагмент HTML, похожий на:
<div id="root">
<div id="A" attrib_2="bar"></div>
<div id="B" attrib_2="baz">
<div id="H" attrib_1="gnu">
<p>
<div id="F" attrib_2="baz"></div>
</p>
</div>
</div>
<div id="C" attrib_2="owl"></div>
<div id="D" attrib_2="uhu"></div>
<div id="E" attrib_2="boom"></div>
</div>
Теперь я хотел бы выбрать все фрагменты, имеющие attrib_2 (* [attrb_2]), за исключением тех, которые являются потомками узла с установленным attrib_1. Может быть больше уровней вложенности с произвольными тегами (например, <p>
в этом примере). С Enlive (http://enlive.cgrand.net/), я уже пробовал что-то вроде:
(select snippet [(but (attr? :attrib_1)) (attr? :attrib_2)])
Но это не работает, потому что отрицание (but (attr? :attrib_1))
соответствует также тегу <p>
. Есть ли способ выразить это с помощью заданных предикатов селектора (http://enlive.cgrand.net/syntax.html), или я должен написать свой собственный?
Заранее спасибо
-Jochen