[xsl] Sorting Sibling Nodes !!!

Subject: [xsl] Sorting Sibling Nodes !!!
From: "Ciaran Byrne" <ciaran.byrne@xxxxxxx>
Date: Wed, 16 May 2001 20:31:05 +0100
Hi all,
	I have some content of the form..

<template/><do type="accept"><go href="foo"/></do>

what I want is the following...
if 'do' is a sibling of template(as above) then place 'do'
inside template ie.

<template><do type="accept"><go href="foo"/></do></template>

otherwise leave 'template' as is..

<template></template>.
(NB - I need the output as <template></template> and not <template/>).

I've tried this with the XSL below(Snippet!), However I'm getting duplicate
outputs. Is this because the 'do' gets matched once as a sibling and
a second time when I have <xsl:apply-templates
select="following-sibling::do"/> ?.
In any matter, could someone suggest some ideas ;o)

<!-- ELEMENT do -->
<xsl:template match = "do">
	<xsl:element name="{name()}">
		<xsl:apply-templates/>
	</xsl:element>
</xsl:template>

<!-- ELEMENT template -->
<xsl:template match="template">
	<xsl:choose>
		<xsl:when test="following-sibling::do">
			<xsl:element name="{name()}">
					<xsl:apply-templates select="following-sibling::do"/>
			</xsl:element>
		</xsl:when>
		<xsl:otherwise>
			<xsl:element name="{name()}">
				<xsl:apply-templates/>
			</xsl:element>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

Thanks for the help,
Ciaran.



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread