[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] sorting by comparing two nodes
Hi, I'm stuck with a sorting problem and hope to find some help here :-) I have the following input: <points>10 13,20 34,2 10,40 67</points> This is a comma-separated list of 2d points. Each point consists of a x-coordinate and a y-coordinate, parted by a white-space. And I have a reference point, eg. <refpoint>3 2</refpoint> Now I want to sort the list of points. To do so I have to compare two points and compute the following: result =3D (P1.x - P0.x)*(P2.y - P0.y) - (P2.x - P0.x)*(P1.y - P0.y) (P0 -> reference point, P1 -> one point of the list, P2 -> another point of the list) According to the value of "result", P1 and P2 shall be sorted as follows: result < 0: P1 goes before P2 result > 0: P2 goes before P1 result =3D 0: no sorting required Assume the following template: <xsl:template name=3D"sort"> <xsl:with-param name=3D"refpoint"/> <xsl:with-param name=3D"$points"/> <xsl:for-each select=3D"tokenize($points,',')"> <xsl:sort select=3D"."/> ...... </xsl:for-each> </xsl:template> I can't compare two points within <xsl:sort/> the way I have to, can I? How can I solve my sorting problem using xslt? Thanks for any ideas, Claus
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|