RE: XSLT sort
> -----Original Message----- > From: Tomas Olsson [mailto:tomas.olsson@xxxxxxxxxxxxxxxxxxxxxxxx] > Hi, > Im trying to get better performance by using keys, I have heard thats > possible but I dont know how to do. > Well, depends on what you want to achieve. Your initial code: - applies templates to the Person nodes, sorted on @enamn - for each Person node, applies templates to the @enamn node - for each @enamn (one on each Person node), insert a copy of every Person node with an @enamn equal to the current one Unfortunately, we can only guess what the initial structure is that you're trying to improve. My best guess is you want to create a variable containing all unique @enamn values in the document, and use that to take control over the template matching, like: <xsl:key name="name-key" match="Person" use="@enamn" /> <xsl:template match="Katalog"> <xsl:variable name="unique-names" select="Person[generate-id()= generate-id(key('name-key',@enamn))]/@enamn" /> <xsl:for-each select="$unique-names"> <xsl:sort select="." order="ascending" /> <xsl:apply-templates select="key('name-key',.)" /> </xsl:for-each> </xsl:template> In this way, the sorting will only be performed on the group of unique names instead of on all nodes in the document, which could mean a considerable improvement in documents as large as you describe. HTH! Greetz, Andreas
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