|
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 |