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

Re: Connecting the Source and Destination fields

Subject: Re: Connecting the Source and Destination fields
From: Ronan Klyne <ronan.klyne@xxxxxxxxxxx>
Date: Mon, 20 Aug 2007 09:03:52 +0100
Re:  Connecting the Source and Destination fields
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> -&gt; </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:  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

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-2013 All Rights Reserved.