in reply to XML::Xpath - Can I get the XPath of the current node?

My approach (not knowing that much about XPath) would be to walk up the tree/parent axis and build the path to the current node from that (I'm thinking in XML::LibXML syntax, sorry):

sub get_path { my ($node) = @_; my $path = '';; my $p = $node; while (defined my $p = $p->parentNode) { $path = $p->nodeName . "/" . $path }; };

... but that method breaks down as soon as you have to nodes with the same tag. You will have to add the index of the current node then, which I don't know how to get.

This whole method assumes that XML::Parser also has some of the methods the DOM/XML::LibXML has...

Replies are listed 'Best First'.
Re^2: XML::Xpath - Can I get the XPath of the current node?
by admiral_grinder (Pilgrim) on Feb 29, 2008 at 19:16 UTC
    If there is two+ nodes of the same name, you should be able to do a preceding sibling (or previous sibling) on the context node and count.