The following XPath 2.0 expression :
//file/concat(string-join(ancestor::*[parent::*]
/concat(name(.), '/'),
''),
@name, ' '
)
when evaluated against the provided XML document :
produces the wanted, correct result :
home/mysite/www/images/logo.gif
home/mysite/www/index.html
home/mysite/www/about_us.html
In case you cannot use XPath 2.0, it isn't possible to produce the wanted result only with an XPath 1.0 expression .
然后必须使用托管XPath的编程语言(例如XSLT,C#,php,...)来生成结果 .
Here is an XSLT 1.0 solution :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
when this transformation is applied on the same XML document, the same correct result is produced :
home/mysite/www/images/logo.gif
home/mysite/www/index.html
home/mysite/www/about_us.html