Subject: Re: [xsl] Connecting the Source and Destination fields From: Ronan Klyne <ronan.klyne@xxxxxxxxxxx> Date: Mon, 20 Aug 2007 09:03:52 +0100 |
To me, keys seem to be the way forward here. Does the following stylesheet make sense to you? ------- XSL: <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes" encoding="ISO-8859-1"/> <xsl:key name="source-conn" match="/root/connection" use="@source"/> <xsl:template match="/root"> <xsl:for-each select="/root/connection[not(/root/connection/@destination = @source)]"> <xsl:value-of select="@source"/> <xsl:call-template name="do-next"> <xsl:with-param name="source" select="@destination"/> </xsl:call-template> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> <xsl:template name="do-next"> <xsl:param name="source"/> <xsl:variable name="conn" select="key('source-conn', $source)"/> <xsl:if test="$conn"> <xsl:text> -> </xsl:text> <xsl:value-of select="$conn/@source"/> <xsl:call-template name="do-next"> <xsl:with-param name="source" select="$conn/@destination"/> </xsl:call-template> </xsl:if> </xsl:template> </xsl:stylesheet> ------- INPUT: <root> <connection destination="event.3" source="event.0"/> <connection destination="event.1" source="event.2"/> <connection destination="event.2" source="event.3"/> <connection destination="event.4" source="event.1"/> </root> ------- END # r Yaswanth wrote: > Hi Andrew, > Thanks for the reply > But I have some issues ! > > What if I have some ting like this ? > > <connection destination="event.3" source="event.0"/> > <connection destination="event.1" source="event.2"/> > <connection destination="event.2" source="event.3"/> > <connection destination="event.4" source="event.1"/> > > By using > > <xsl:sort select="@source"/> > > For understanding my input will change to : > > <connection destination="event.3" source="event.0"/> > <connection destination="event.4" source="event.1"/> > <connection destination="event.1" source="event.2"/> > <connection destination="event.2" source="event.3"/> > > My output will be > event.0 -> event.3 -> event.4 -> event.1 -> event.2 > > > But I am expecting > > event.0 -> event.3 -> event.2 -> event.1 -> event.4 > > > Regards, > Yaswanth > > -----Original Message----- > > From: Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx] > Sent: Monday, August 20, 2007 1:04 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Connecting the Source and Destination fields > > On 8/20/07, Yaswanth <yaswanth.mtrx@xxxxxxxxx> wrote: >> Hi All, >> >> I am trying to arrange the chain of event connections by mapping the > Source >> and Destination of each Connection. >> >> When my XML file is something like this: >> >> <connection destination="event.1"source="event.0"/> >> <connection destination="event.2" source="event.1"/> >> <connection destination="event.3" source="event.2"/> >> <connection destination="event.4" source="event.3"/> >> >> // Ordered >> // Please note that The Destination Value of any node is equal to the > Source >> value of the next Node >> >> Here I am taking the 'source' value from the first 'connection' and by > keep >> on appending the 'destination' value of all the 'connection's I get the >> Output as: >> >> >> event.0 -> event.1 -> event.2 -> event.3 -> event.4 >> >> Problem: >> >> Now my XML input file is changed to some thing like this : >> >> <connection destination="event.1" source="event.0"/> >> <connection destination="event.3" source="event.2"/> >> <connection destination="event.2" source="event.1"/> >> <connection destination="event.4" source="event.3"/> >> >> // Unordered >> // Please note that The Destination Value of any node is not always equal > to >> the Source value of the next Node >> >> If I process this XML file in the same way I did the earlier one I will > get >> output as: >> >> event.0 -> event.1 -> event.3 -> event.2 -> event.4 >> >> Here event.1's destination is event.2 only but in the Output I am having >> event.3 as the destination. >> event.2's destination is event.3 only but in the Output I am having > event.4 >> as the destination. >> event.3's destination is event.4 only but in the Output I am having > event.2 >> as the destination. >> >> I know this is happening because of the Logic I used in arranging these >> things.. >> >> Can I get some push on how to arrange these things in Order?! > > Sort them : > > <xsl:sort select="@source"/> > > ? > -- Ronan Klyne Business Collaborator Developer Tel: +44 (0)870 163 2555 ronan.klyne@xxxxxxxxxxx www.groupbc.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Connecting the Source and, Andrew Welch | Thread | Re: [xsl] Connecting the Source and, Ronan Klyne |
Re: [xsl] Connecting the Source and, Andrew Welch | Date | Re: [xsl] Connecting the Source and, Ronan Klyne |
Month |