Subject: Re: [xsl] XSL/XPath 2.0 - most efficient way to find route to target element From: David Carlisle <davidc@xxxxxxxxx> Date: Sat, 26 Apr 2008 23:43:08 +0100 |
This doesn't get quite the result you ask for I get ../bat for the last one, also I assume that nodes without a name should not contribute to the path (otherwise I'd need an extra ../ to get out of the unnamed node that contains c2). <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:f="data:,f"> <xsl:key name="id" match="*" use="@id"/> <xsl:variable name="r" select="/"/> <xsl:template match="/"> a3 to b3 <xsl:value-of select="f:path('a3','b3')"/> c3 to b3 <xsl:value-of select="f:path('c3','b3')"/> b4 to b3 <xsl:value-of select="f:path('b4','b3')"/> </xsl:template> <xsl:function name="f:path"> <xsl:param name="a"/> <xsl:param name="b"/> <xsl:variable name="an" select="key('id',$a,$r)"/> <xsl:variable name="bn" select="key('id',$b,$r)"/> <xsl:value-of> <xsl:sequence select="($an/ancestor-or-self::node[@name] except $bn/ancestor::node)/'../'"/> <xsl:value-of separator="/" select="($bn/ancestor-or-self::node[@name] except $an/ancestor::node)/@name"/> </xsl:value-of> </xsl:function> </xsl:stylesheet> ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSL/XPath 2.0 - most efficien, Robert Koberg | Thread | Re: [xsl] XSL/XPath 2.0 - most effi, Robert Koberg |
[xsl] XSL/XPath 2.0 - most efficien, Robert Koberg | Date | [xsl] complicated xslt question, Михаил Шестаков |
Month |