Subject: RE: [xsl] XSLT sort From: "Andreas L. Delmelle" <a_l.delmelle@xxxxxxxxxx> Date: Thu, 20 May 2004 22:32:18 +0200 |
> -----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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] XSLT sort, Tomas Olsson | Thread | RE: [xsl] XSLT sort, Tomas Olsson |
Re: [xsl] saxon command line error , J.Pietschmann | Date | Re: [xsl] PDF File Attachment, J.Pietschmann |
Month |