|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: How to resolve the absolute location of a node
Jarno,
I'm using this "absolute" location to name HTML
form elements; and then using a servlet to
transform a POST into an update on the given
XML file. Your suggestion to use "absolute"
entries is perfect.
A new-improved version is below (that also handles
attributes, thanks to Ken Holman.
On Sun, 17 Oct 1999, Jarno Elovirta wrote:
> I'm trying to write a template that would return the absolute location path
> of the node i'm processing. e.g. with processing the c elements of
> > <a><b x="y"><c/></b><b x="z" p="q"><c/></b></a>
> the templete would return
> /a/b[1]/c[1] and /a/b[2]/c[1]
This template returns:
/a[0001]/b[0001]/c[0001] and /a[0001]/b[0002]/c[0001]
I'm using a four digit pad so that I can sort the
key=value pairs in the HTTP/POST and make one pass
(using a SAX processor) at the XML document to update it.
I can have up to 99 children element pretty easily, so
I figured allowing for 9999 before the sort fails would
work just fine (and then I can throw an error)
...
<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet [<!ENTITY nl "
">]>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="*">
<xsl:call-template name="resolver" />
<xsl:apply-templates/>
</xsl:template>
<xsl:template name="resolver" >
<xsl:for-each select="ancestor-or-self::*">
<xsl:variable name="id" select="generate-id(.)" />
<xsl:variable name="name" select="name()" />
<xsl:value-of select="concat('/',name())"/>
<xsl:for-each select="../*[name()=$name]" >
<xsl:if test="generate-id(.)=$id">
<xsl:text>[</xsl:text>
<xsl:value-of select="format-number(position(),'0000')"/>
<xsl:text>]</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
<xsl:if test="not(self::*)">
<xsl:value-of select="concat('/@',name())" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








