xsl-list
[Top] [All Lists]

RE: [xsl] Determining the context node

2006-04-13 08:32:23
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>