I looked at the XSLT idea that three people suggested. I even went to various XSLT websites. It seems to represent an extraordinary deviation from my requirement with no clear way back to it. Also, I just found XML::Traverse::ParseTree, which might well be the answer.
One world, one people
Comment on Re: Traversing arbitrarily deep and baggy structures
XSLT is a template system. It's not for data extraction. The useful part of XSLT is its use of XPaths, but there's no reason to use XSLT to use XPaths.