Subject: RE: [xsl] the fastest way to test if variable is empty From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 9 Dec 2004 10:28:17 -0000 |
> At first, my old implementation does something like: > > <xsl:variable name="mayContinue"> > <xsl:choose> > <xsl:when > test="some_big_test_over_big_xml_trees_which_was_very_slow">1< > /xsl:when> > <xsl:otherwise>0</xsl:otherwise> > </xsl:choose> > > <xsl:if test="$mayContinue=1"> > > <xsl:if > test="other_big_test_to_check_if_something_will_be_processed"> > <!-- print header --> > <!-- process data and generate output --> > <!-- print bottom --> > </xsl:if> > > </xsl:if> It can't do exactly that because you can't access a variable within its own definition, but perhaps you just left out the </xsl:variable> end tag. > > ..... > <xsl:if test="$mayContinue=1"> > <xsl:variable name="processOutput"> > <!-- process data and generate output --> > </xsl:variable> > > <xsl:if test="string-length($processOutput)!=0"> > <!-- print header --> > <xsl:value-of select="$processOutput"/> > <!-- print bottom --> > </xsl:if> > > </xsl:if> > > But I am afraid that when $processOutput will be too big (for > example 100000 > lines of text output), test for it's string-length may be slow. > As I mentioned, it depends on the processor as to whether it optimises this. Although Saxon will optimise the test string-length($X) = 0 to the equivalent of string($X) = '', it will still do the conversion of the result tree fragment to a string, which is probably the expensive part of the operation. It might be cheaper to test if $x contains any text nodes, that is: test="xx:node-set($X)//text()" or in 2.0 simply test="$X//text()". But as mentioned before, it all depends on what your XSLT processor chooses to optimise, which you can only tell by measurement. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] the fastest way to test i, Dusan Zatkovsky | Thread | Re: [xsl] the fastest way to test i, Dusan Zatkovsky |
Re: [xsl] Problem with Output speci, Fabio Cuomo | Date | RE: [xsl] Problem applying XSL to X, Mukul Gandhi |
Month |