Subject: Re: [xsl] optimization of complex XPath From: Graydon <graydon@xxxxxxxxx> Date: Fri, 19 Nov 2010 05:19:36 -0500 |
On Fri, Nov 19, 2010 at 09:25:50AM +0100, Wolfgang Laun scripsit: > The O(n^2) is due to iterating over a list (for) and then iterating > over the document tree to find //num/@cite. > > The following stylesheet should do it better,using xsl:key: I am reluctant to approach the problem with xsl:key because I have about 90,000 individual files in a complex directory structure and I would need a key over all of them, rather than each of them. Since far as I know -- and happy to be wrong! -- I can't declare a key over a collection, so this approach would require concatenating all of the files together. Which is certainly doable but also inherently sluggish. > <?xml version="1.0"?> > <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="text"/> > <xsl:strip-space elements="*"/> > <xsl:key name="citekey" match="num" use="@cite"/> > <xsl:template match="link"> > <xsl:value-of select="(key('citekey',@cite),'ok',concat(@cite,' is > missing'))[2]"/><xsl:text> > </xsl:text> > </xsl:template> > </xsl:stylesheet> > > I have tested it with a very primitive XML only: > > <doc> > <foo> > <num area="decisions" cite="1"/> > <bar> > <link area="decisions" cite="1"/> > <link area="decisions" cite="2"/> > </bar> > </foo> > </doc> Thank you! -- Graydon
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] optimization of complex X, Wolfgang Laun | Thread | Re: [xsl] optimization of complex X, Wolfgang Laun |
[xsl] Finding the position of an el, Rashi Bhardwaj | Date | Re: [xsl] optimization of complex X, Graydon |
Month |