何かをすることができます:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:param name="pPath1" select="'/books/book/title'"/>
<xsl:param name="pPath2" select="'/books/book/description'"/>
<xsl:key name="kElemByPath" match="*"
use="concat('/', name(ancestor-or-self::*[last()])
,'/', name(ancestor-or-self::*[last()-1])
,'/', name(ancestor-or-self::*[last()-2])
)"/>
<xsl:template match="/">
<xsl:copy-of select="key('kElemByPath', $pPath1)"/>
==========
<xsl:text/>
<xsl:copy-of select="key('kElemByPath', $pPath2)"/>
</xsl:template>
</xsl:stylesheet>
この変換が次のXMLドキュメントに適用される場合:
<books>
<book isbn="1590593049">
<title>Extending Flash MX 2004</title>
<description>
Using javascript alongwith actionscript 3.0 and mxml.</description>
</book>
<book isbn="0132149184">
<title>Java Software Solutions</title>
<description>
Complete book full of case studies on business solutions and design concepts while building mission critical
business applications.
</description>
</book>
</books>
必要な正しい結果が生成されます。
<title>Extending Flash MX 2004</title>
<title>Java Software Solutions</title>
==========
<description>
Using javascript alongwith actionscript 3.0 and mxml.</description>
<description>
Complete book full of case studies on business solutions and design concepts while building mission critical
business applications.
</description>
「パス」内のロケーションステップの最大数がわかっている場合は、この例のようにキーを定義できます。ロケーションステップの数が少ない式は、必要な数のスラッシュで終了する必要があります。