lxml - XPath: descendants, but not by traversing this node -
i have tree of nodes quite frankly mess.
|-... |-cat \-dog |- dog * | |- chicken | | \- cat ! | \- cat ! | \- cat ! | \- dog | |- cat | \- ... |- cat |- dog | \- cat \- ...
given i've selected asterisked 'dog' node, how can select cats whom recent 'dog' ancestor (i.e. have exclamation mark)
equivalently, how can cat descendants of node can reached without traversing dog node?
i'm working in lxml , have bad solution involving disconnecting graphs drop_tree()
-ing dog nodes.
you use exslt's set extensions: http://www.exslt.org/set/. they're available in lxml
using namespaces={"set": "http://exslt.org/sets"}
in xpath expressions.
you like
asteriskeddog.xpath("set:difference(.//cat, .//dog/cat)", namespaces={"set": "http://exslt.org/sets"})
meaning "all cat
elements under current node, except under dog
element under current node. i've used trick in microdata parsing nested itemscope
, itemprop
elements
Comments
Post a Comment