From: Scott Bronson <bronson(_at_)rinspin(_dot_)com>
Date: 26 Oct 2002 09:57:54 -0700
Hello. A sort problem is stumping me right now. I've got the following
nodes:
<Member name="CreateInstance">
<Member name="System.Caption.Insert">
<Member name="System.Collections.ICollection.Count"
I'd like to sort them by name, without leading namespace:
Count, CreateInstance, Insert
Then I'd like to output them, WITH the namespace:
System.Collections.ICollection.Count
CreateInstance
System.Caption.Insert
Normally, I use leaf-name (below) to trim the namespace. However, I
suspect it's impossible to get sort to use a named template, and I
haven't figured out any other way of figuring out the leaf name.
Is possible to sort on the leaf name? Is it possible in XML 1.0? :)
Thank you!
- Scott
<x>
<Member name="CreateInstance"/>
<Member name="System.Caption.Insert"/>
<Member name="System.Collections.ICollection.Count"/>
</x>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
<xsl:template match="x">
<xsl:for-each select="Member">
<xsl:sort select="concat(
substring-after(substring-after(substring-after(@name,'.'),'.'),'.') ,
substring-after(substring-after(@name[not(contains(substring-after(substring-after(.,'.'),'.'),'.'))],'.'),'.')
,
substring-after(@name[not(contains(substring-after(.,'.'),'.'))],'.') ,
@name[not(contains(.,'.'))] )"/>
member: <xsl:value-of select="@name"/>
sorted by: <xsl:value-of select="concat(
substring-after(substring-after(substring-after(@name,'.'),'.'),'.') ,
substring-after(substring-after(@name[not(contains(substring-after(substring-after(.,'.'),'.'),'.'))],'.'),'.')
,
substring-after(@name[not(contains(substring-after(.,'.'),'.'))],'.') ,
@name[not(contains(.,'.'))] )"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
$ saxon sort.xml sort.xsl
<?xml version="1.0" encoding="utf-8"?>
member: System.Collections.ICollection.Count
sorted by: Count
member: CreateInstance
sorted by: CreateInstance
member: System.Caption.Insert
sorted by: Insert
David
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list