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

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -