Hi,
At 06:23 AM 4/13/2006, Mike wrote:
You can get the name of the context node using name(). Saxon has an
extension function saxon:path() which gives you a full path to a node; I
believe there are portable solutions to this problem at
http://www.dpawson.co.uk/xsl/sect2/N6077.html
but it seems to be down.
Here's some simple code to write an XPath for any element:
<xsl:template match="*" mode="make-path">
<xsl:apply-templates select="ancestor-or-self::*" mode="make-step"/>
</xsl:template>
<xsl:template match="*" mode="make-step">
<xsl:text>/</xsl:text>
<xsl:value-of select="name()"/>
<xsl:if test="(preceding-sibling::*|following-sibling::*)
[name()=name(current())]">
<xsl:text>[</xsl:text>
<xsl:number/>
<xsl:text>]</xsl:text>
</xsl:if>
</xsl:template>
I leave it as an exercise how to extend this to handle attributes,
the root, etc.
Cheers,
Wendell
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--