[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Write context xpath expression

Subject: Re: Write context xpath expression
From: Syd Bauman <Syd_Bauman@xxxxxxxxx>
Date: Wed, 21 Oct 2009 21:37:11 -0400
Re:  Write context xpath expression
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.