Hi,
You can iterate the elements with lower case names and sort selecting
the corresponding upper case element:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<result>
<xsl:for-each select="*/*[translate(name(), 'ABCDE', 'abcde') =
name()]">
<xsl:sort select="../*[name() = translate(name(current()),
'abcde', 'ABCDE')]"/>
<no><xsl:value-of select="."/></no>
</xsl:for-each>
</result>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<result><no>30</no><no>40</no><no>10</no><no>50</no><no>20</no></result>
Best Regards,
George
-----------------------------------------------
George Cristian Bina
<oXygen/> XML Editor & XSLT Editor/Debugger
http://www.oxygenxml.com
Kenny Bogoe (BogoeMD) wrote:
Hi,
I have this structure where the content of tags <A> to <E> have to determine
the order of tag-content <a> to <e>. The result needs to be as shown below.
I can manage to make a stylesheet with an <xsl:if> for each <A> to <E>
asking whether the number is 1, 2, 3, 4 or 5, but I am sure there must be a
simpler way to do this. I can not use position() since the position af the
tags can change in the structure.
<Root>
<a>10</a>
<b>20</b>
<c>30</c>
<d>40</d>
<e>50</e>
...
...
<A>3</A>
<B>5</B>
<C>1</C>
<D>2</D>
<E>4</E>
</Root>
Result I need:
<no>30</no> <!-- C = 1 has to be first with the value of c (which is 30) -->
<no>40</no>
<no>10</no>
<no>50</no>
<no>30</no>
Thanks.
Kenny Bogoe
--+------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--