Subject: Re: [xsl] Bad practice From: António Mota <amsmota@xxxxxxxxx> Date: Fri, 8 Apr 2005 17:00:35 +0100 |
Excelent, i've incorporated the two sugestions, it works the same but the coding style (at least) is much better. Thanks. On Apr 8, 2005 4:13 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote: > > I hope this message gets to the list, cause my last fews > > seems that don't. > > You last message got there (twice), but for some reason no-one answered it. > > > > What are the consequences of a construction like this in terms of > > performance, and what about coding style? > > > > I'm creating a table like this where diasemana.xml is a xml > > representation of week days: > > > > <table id="{$t}" border="1"> > > <th>Processo</th> > > <xsl:for-each > > select="document('diassemana.xml')/dias/dia"> > > <th> > > <xsl:value-of > > select="@txt"/> > > </th> > > </xsl:for-each> > > <xsl:apply-templates > > select="/GHoras/Processos/Processo"/> > > </table> > > > > <xsl:template match="Processo"> > > <tr prK="{Processo_K}"> > > <xsl:variable name="this" select="."/> > > <td> > > <xsl:value-of select="NomeProcesso"/> > > </td> > > <xsl:for-each > > select="document('diassemana.xml')/dias/dia"> > > <xsl:variable name="pos" > > select="position()"/> > > <xsl:for-each select="$this"> > > <xsl:call-template > > name="edhoras"> > > <xsl:with-param > > name="dia" select="$pos"/> > > </xsl:call-template> > > </xsl:for-each> > > </xsl:for-each> > > </tr> > > </xsl:template> > > > > This second use of document() serves only to do a 7th time loop, > > without using any data, and the nested for-each is simply to change > > context. > > > > Is this a bad practice? > > No, not especially. But when a named template is dependent on the context > node, it can often be better to make it a match template instead, perhaps > with a specific mode. Then you could replace > > <xsl:for-each select="document('diassemana.xml')/dias/dia"> > <xsl:variable name="pos" select="position()"/> > <xsl:for-each select="$this"> > <xsl:call-template name="edhoras"> > <xsl:with-param name="dia" select="$pos"/> > </xsl:call-template> > </xsl:for-each> > </xsl:for-each> > > with > > <xsl:for-each select="document('diassemana.xml')/dias/dia"> > <xsl:apply-templates select="$this" mode="edhoras"> > <xsl:with-param name="dia" select="position()"/> > </ > </ > > Michael Kay > http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Bad practice, Michael Kay | Thread | [xsl] omit namespaces, Jiang, Peiyun |
Re: [xsl] Re: Pass a DOM Node to a , Emmanouil Batsis | Date | Re: [xsl] Re: Pass a DOM Node to a , António Mota |
Month |