This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: Strange Sort...


hi

> <bucket>
> 	<object id="first" x="35" y="10" />
> 	<object id="second" x="15" y="58" />
> 	<subbucket>
> 		<object>
> 			<id>third</id>
> 			<x>28</x>
> 			<y>145</y>
> 		</object>
> 	</subbucket>
> 	<object id="fourth" x="65" y="27" />
> </bucket>

[...]
 
> I'd like to be able to sort all four objects based on the value 
> of their "y"s, regardless of whether they are a child or an 
> attribute.  Is that possible?  Doing two sorts, with one being 

is this what you want?

[c:\temp]type nicky.xml
<?xml version="1.0" encoding="UTF-8" ?>
<bucket>
        <object id="first" x="35" y="10" />
        <object id="second" x="15" y="58" />
        <subbucket>
                <object>
                        <id>third</id>
                        <x>28</x>
                        <y>145</y>
                </object>
        </subbucket>
        <object id="fourth" x="65" y="27" />
</bucket>

[c:\temp]type nicky.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml"
            indent="yes" />

<xsl:template match="bucket">
  <xsl:copy>
    <xsl:apply-templates select="*">
      <xsl:sort select="@y | object/y" data-type="number" />
    </xsl:apply-templates>
  </xsl:copy>
</xsl:template>

<xsl:template match="object | subbucket">
  <xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>

[c:\temp]saxon nicky.xml nicky.xsl
<?xml version="1.0" encoding="utf-8" ?>
<bucket>
   <object id="first" x="35" y="10"/>
   <object id="fourth" x="65" y="27"/>
   <object id="second" x="15" y="58"/>
   <subbucket>
      <object>
         <id>third</id>
         <x>28</x>
         <y>145</y>
      </object>
   </subbucket>
</bucket>
[c:\temp]

hope this does what you needed

--
Jarno Elovirta     jarno.elovirta@codeonline.com
CODEONLINE Ltd.    http://www.codeonline.com
P.O. Box 538 (Ukonvaaja 2 A), FIN-02130 Espoo, Finland
Mobile: +358 40 747 5572 Fax: +358 9 4393 0410

"Hoc non credo; toga mea surrepta est iterum!"


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]