Subject: RE: [xsl] generate xpath expression in web links From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 1 Sep 2006 10:11:06 +0100 |
> Our web app needs to generate the XPath expression that > uniquely identifies a particular node, something like: > > <a href="/project[1]/admin[3]/project-manager[5]/full-name[2]">Some > Name</a> > Firstly, you mean "a" path expression, not "the" path expression. There are many path expressions that uniquely identify a node. Your particular version doesn't tackle namespaces, which is the biggest problem in creating such an expression. If all you are concerned about is to get back to the original element, an expression such as /*/*[3]/*[5]/*[2] removes this problem. You could use <xsl:number/> rather than counting preceding siblings. Michael Kay http://www.saxonica.com/ > This is what I've come up with so far. > > =========================== > > <a><xsl:call-template name="generatePath"/><xsl:value-of > select="some-link"/></a> > > <xsl:template name="generatePath"> > <xsl:attribute name="href"> > <xsl:for-each select="ancestor-or-self::*"> > <xsl:text>/</xsl:text> > <xsl:value-of select="local-name(.)"/> > <xsl:text>[</xsl:text> > <xsl:value-of > select="count(preceding-sibling::*[local-name()=local-name(cur > rent())])+ > 1"/> > <xsl:text>]</xsl:text> > </xsl:for-each> > </xsl:attribute> > </xsl:template> > > =========================== > > It works ok, but I just wanted to check to see if I was > missing anything to make it more efficient. I'm using xslt2. > > Thanks, David
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Retrieving top-level attr, Wendell Piez | Thread | [xsl] Questions regarding match, m.core |
RE: [xsl] Retrieving top-level attr, Michael Kay | Date | Re: [xsl] Retrieving top-level attr, andrew welch |
Month |