xsl-list
[Top] [All Lists]

RE: generate full xpath name to an attribute?

2003-03-31 09:36:13
yikes! - looks like the simplest way is to have:

<xsl:template match="name">
        <xsl:for-each select="ancestor-of-self::*">
          <xsl:value-of select="name()" /><xsl:text>/</xsl:text>
        </xsl:for-each>
        <xsl:value-of select="." />
      </xsl:template>


That won't work if you want to generate a path that's independent of the
namespace context. If you want the path expression to be
context-independent then you need to generate steps of the form

*[local-name()='x' and namespace-uri()='y']

Also, the code above generates a path such as a/b/c/d which will select
many elements, whereas you probably want one that selects a single
element such as a[3]/b[2]/c[89]/d[1]. But in this case the "tumbler"
path of the form *[23]/*[2]/*[17] is simpler, and avoids namespace
problems entirely.

As you see, there are multiple solutions to this requirement - which is
because there are actually a number of different requirements. This is
why there is no standard function.

Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list