我有一个类似于以下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
attrib_2
应该是不同的吗?[编辑:抱歉,我在考虑类,这可能实际上有助于识别不同的作用域,而不是属性。] - Jeremy