特定のエレメントからそのエレメントを表すXPathを生成することがよくある。perlだとこれが楽にできるのを XML::Diff — XML DOM-Tree based Diff & Patch Module - search.cpan.org のソースを見てて知った。 XML::LibXML::NodeにnodePathっていうメソッドがある。 This function is not specified for any DOM level: It returns a canonical structure based XPath for a given node. と書いてある通り use XML::LibXML; my $xml = <<'__XML__'; <root> <category> <name>fruit</name> <item> <name>apple</name>