Subject: RE: [xsl] Slow XSLT From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 13 Mar 2008 10:28:48 -0000 |
> For each Row in my xml I need to output a <tr>. So I apply templates. > > <xsl:variable name=set" select="Report/Rows//Row" /> ..... > <xsl:apply-templates select="$set"/> If you're only using the variable once, then this is exactly equivalent to: <xsl:apply-templates select="Report/Rows//Row"/> ..... That doesn't mean it's wrong to declare a variable and use it only once, I'm just pointing out the equivalence. Your arguments that you are using a variable because of the intervening RowGrp elements don't make sense - that's an argument for using "//" in the middle of this path, but not an argument for using a variable. > > <xsl:template name="Row"> > ...... > <tr> > <xsl:param name="set"/> > <xsl:apply-templates select="$set[postion()]/*"/> </tr> > <xsl:template> There are a couple of syntax errors here, and a couple of semantic errors. 1. If xsl:param appears in an xsl:template, then it must come first 2. postion() should be position() 3. as already pointed out, the predicate [position()] is legal but meaningless 4. (and I suspect this is the root cause of your confusion), you're declaring a parameter $set, and not giving it a value. The $set inside your template bears no relationship to the $set in the calling code, they are two different variables that just happen to have the same name. You could give them the same value if the caller did <xsl:with-param name="set" select="$set"/>, but I can't see why you would want to. If you don't give the parameter a value, then the default is a zero-length string, and I would expect that to cause a type error when you do apply-templates, on the grounds that you can only apply templates to nodes, not to strings. I haven't seen anything in your problem description that indicates why you need to make things so complicated. Perhaps I've missed something - you keep hinting that you haven't shown us the whole problem. From all I've seen, you can solve the problem using the vanilla push-processing coding style demonstrated by David Carlisle's responses. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Slow XSLT, David Carlisle | Thread | RE: [xsl] Slow XSLT, Cleyton Jordan |
RE: [xsl] No of Times Named Templat, Michael Kay | Date | RE: [xsl] inserting tabs, Michael Kay |
Month |