I have got an HTML snippet similar to:
<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>
Now, I would like to select all snippets having an attrib_2 (*[attrb_2]) excluding those being descendants of a node having an attrib_1 set. There can be more nesting levels with arbitrary tags (like <p>
in this example). With Enlive (http://enlive.cgrand.net/), I have already tried something like:
(select snippet [(but (attr? :attrib_1)) (attr? :attrib_2)])
But this doesn't work because the negation (but (attr? :attrib_1))
matches also the <p>
tag. Is there a way to express this with the given selector predicates (http://enlive.cgrand.net/syntax.html), or do I have to write my own?
Thanks in advance
-Jochen
attrib_2
be something different? [Edit: sorry, I was thinking about classes, which might actually be useful to identify the different scopes as opposed to attributes.] – Dyslalia