Here's a chunk of XML:
<xml>
<section>
<element>good</element>
<section class="ignored">
<element>bad</element>
</section>
</section>
</xml>
It's easy enough to select all elements
, or all elements
inside a section.ignored
:
@doc.css('element').text
=> "goodbad"
@doc.css('section.ignored element').text
=> "bad"
But how do I select all elements
that are not inside section.ignored
? This doesn't work:
@doc.css('section:not(.ignored) element').text
=> "goodbad"
...because that actually means "all elements that are contained in any section that is not ignored", including the top-level section that wraps everything else!
Additional twist: unlike the simplified sample above, the real XML I have to deal with is nested to arbitrary depth, including sections within the ignored section(s).
And yes, I could just substract the bad array from the full array in Ruby and call it a day, but I'd prefer a pure CSS solution (or, if you must, XPath) if possible.
No comments:
Post a Comment