[xsl] Using vars

Subject: [xsl] Using vars
From: xptm <xptm@xxxxxxx>
Date: Mon, 26 Jul 2004 19:09:24 +0100
In terms of performance, what will be the best way to do this? Having:

<Formatos>
<Forms>
<Form Nome="ProcessoTipoGrupoListaDoc">
<Grids>
<Grid Nome="ProcessoTipoGrupoLista_Grid" SourceObject="ProcessoTipoGrupoLista_Grid">
<Zooms>
<Zoom Coluna="ProcessoTipoGrupo">
<FormZoom>ProcessoTipoGrupoDoc</FormZoom>
<ModoZoom>AZ</ModoZoom>
<ParametroZoom>ProcessoTipoGrupo</ParametroZoom>
</Zoom>
</Zooms>
</Grid>
</Grids>
(*/ n Grids/ *)
</Form>
</Forms>
</Formatos>


should i use one variable like

<xsl:template name="StandardEvents">
<Events>
<xsl:variable name="pages"
select="/Formatos/Forms/Form/Grids/Grid/Zooms/Zoom[@Coluna!='xxx']/*[name()='FormZoom' or name()='ParametroZoom']" />
<Event method="tablemouse" type="MouseHandler">
<xsl:attribute name="target">GridPanel</xsl:attribute>
<xsl:attribute name="next">
<xsl:for-each select="$pages">
<xsl:if test="name()='FormZoom'">
<xsl:value-of select="." />
<xsl:text>:</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
<xsl:attribute name="params">
<xsl:for-each select="$pages">
<xsl:if test="name()='ParametroZoom'">
<xsl:value-of select="." />
<xsl:text>:</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:attribute>
</Event>
</Events>
</xsl:template>



or two vars, like


<xsl:template name="StandardEvents">
<Events>
<xsl:variable name="pages">
<xsl:for-each select="/Formatos/Forms/Form/Grids/Grid/Zooms/Zoom[@Coluna!='xxx']">
<xsl:value-of select="concat(ParametroZoom,':')" />
</xsl:for-each>
</xsl:variable>
<xsl:variable name="params">
<xsl:for-each select="/Formatos/Forms/Form/Grids/Grid/Zooms/Zoom[@Coluna!='xxx']">
<xsl:value-of select="concat(ParametroZoom,':')" />
</xsl:for-each>
</xsl:variable>


    <Event method="tablemouse" type="MouseHandler">
           <xsl:attribute name="target">GridPanel</xsl:attribute>
           <xsl:attribute name="next">
             <xsl:value-of select="$pages" />
           </xsl:attribute>
           <xsl:attribute name="params">
             <xsl:value-of select="$params" />
           </xsl:attribute>
          </xsl:attribute>
   </Event>
 </Events>
</xsl:template>


If i understand correctly, the first only traverses the tree once and the second two times, so if the tree is very big the first option is better?


Thxs.

Current Thread