Re: [xsl] Bad practice

Subject: Re: [xsl] Bad practice
From: James Fuller <jim.fuller@xxxxxxxxxxxxxx>
Date: Fri, 08 Apr 2005 17:03:31 +0200
Antsnio Mota wrote:

>I hope this message gets to the list, cause my last fews seems that don't. 
>
>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?
>  
>

i would suggest placing the document() data in a top level variable
<xsl:variable name="diassemana" select="document('diassemana.xml')"/>
then refer to $diassemana.

otherwise...w/o seeing your edhoras named template and example xml cant
really suggest anything else.

--Jim Fuller

Current Thread