On Sat, Mar 23, 2013 at 10:50:15AM +0000, Alex Bligh wrote:
> I quite often need to find a set of nodes using an XPath expression, then for
> each node in that set, do something, then search for zero or more children of
> that node.
> 
> What I'm interested in is whether the second search can be done with XPath
> too. Can I somehow search for children of a particular node? An obvious
> way would be to use an XPath context based on that node, but you only
> seem to be able to create a context based on a document tree.
> 
> Right now, I am manually iterating through children of the node concerned.
> That's fine, but only works well when I'm searching for immediate children,
> and is obviously not as flexible as XPath.
> 
> I can't help feeling I'm missing something here.

  Yup,

  assuming you have a nodeset from the first XPath query,
then create a new XPath context for the document (do not reuse
the old one there) and then for each node in you node set from
the first query do


   ctxt->node = node;
   res = xmlXPathEval("./foo..", ctxt);
   ...

of course the subtree query will have to be relative, i.e. not
starting by /

Daniel


-- 
Daniel Veillard      | Open Source and Standards, Red Hat
[email protected]  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to