Subject: Re: [xsl] Write context xpath expression From: Syd Bauman <Syd_Bauman@xxxxxxxxx> Date: Wed, 21 Oct 2009 21:37:11 -0400 |
I have successfully used something like the following: --------- <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:apply-templates select=".//c"/> </xsl:template> <xsl:template match="c"> <xsl:message> <xsl:for-each select="ancestor-or-self::*"> <xsl:value-of select="concat( '/', local-name(.) )"/> </xsl:for-each> <xsl:text>[</xsl:text> <xsl:value-of select="position()"/> <xsl:text>]</xsl:text> </xsl:message> </xsl:template> </xsl:stylesheet> --------- Of course this drops the namespace information. (Which could be important in your situation, but didn't matter in mine where there were no name collisions in the documents). Also, I think this may give you undesired counts in the square brackets if you use a predicate to select only some of the <c> elements. But if you only want the path, that for-each should do the job, I think. Note that this sort of question is often easily answered on Dave Pawson's FAQ pages. See http://www.dpawson.co.uk/xsl/sect2/N6052.html#d9122e58. > In XSL 1.0, how can I write out the XPATH expression for the > current context? Example: > <a> > <b> > <c /> > <c /> <!-- assume this is the context --> > <c /> > </b> > </a> > Assuming <c/> is the current context I would like to determine the > xpath pattern like this: /a/b/c > How is this possible? I get how I could walk parent;;node() but I'd > be writing the pattern backwards! Any ideas?
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Write context xpath expressio, Karl Stubsjoen | Thread | [xsl] Assistance with position-bas, Michael Friedman |
[xsl] Write context xpath expressio, Karl Stubsjoen | Date | Re: [xsl] sgml to xml, Ganesh Babu N |
Month |