Re: [xsl] xsl:apply-template and xsl:for-ech confusion

Subject: Re: [xsl] xsl:apply-template and xsl:for-ech confusion
From: "Luke Ambrogio" <luke.ambrogio@xxxxxxxxxxxx>
Date: Wed, 1 Oct 2003 14:47:14 +0200
ok the solution was infact using

<xsl:apply templates select=".."/>

since there was the child element tblMIMSubsector being processed

thanks a lot for your help guys and sorry for the late duplicate e-mail


regards
Luke

----- Original Message -----
From: "Anton Triest" <anton@xxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, October 01, 2004 2:04 PM
Subject: Re: [xsl] xsl:apply-template and xsl:for-ech confusion


> Hi Luke,
>
> You could do that, but you can't use <xsl:apply templates
> select="tblMIMCompanies"/>
> because the for-each loop already puts you in the context of the
> tblMIMCompanies nodes.
> I think it should work if you use <xsl:apply templates select="."/>
>
> Or alternatively use apply-templates instead of for-each and use a mode:
>
> <xsl:template match="tblMIM">
>     <xsl:apply-templates select="tblMIMCompanies"/>
> </xsl:template>
>
> <xsl:template match="tblMIMCompanies">
>     <xsl:if test="$searchby=0 and
> tblMIMSubSectors[@subsectorID=$subsector]">
>         <xsl:apply-templates select="." mode="output"/>
>     </xsl:if>
>     <xsl:if test="$searchby=1 and tblMIMSubSectors[@sectorID=$sector]">
>         <xsl:apply-templates select="." mode="output"/>
>     </xsl:if>
> </xsl:template>
>
> <xsl:template match="tblMIMCompanies" mode="output">
>     <xsl:value-of select="@name"/>
>     ...
> </xsl:template>
>
> Cheers,
> Anton
>
>
> Luke Ambrogio wrote:
>
> >Hello guys,
> >
> >thanks a lot for the great help you gave me with my previous problem,
> >hopefully this will be as simple to solve.
> >I have
> >
> ><xsl:template match="tblMIM">
> >    <xsl:for-each select="tblMIMCompanies">
> >        <xsl:choose>
> >            <xsl:when test="$searchby=0">
> >                <xsl:if test="tblMIMSubSectors[@subsectorID=$subsector]">
> >                    <xsl:value-of select="@name"/>
> >                    ...
> >                </xsl:if>
> >            </xsl:when>
> >            <xsl:when test="$searchby=1">
> >                <xsl:if test="tblMIMSubSectors[@sectorID=$sector]">
> >                    <xsl:value-of select="@name"/>
> >                    ...
> >                </xsl:if>
> >            </xsl:when>
> >        </xsl:choose>
> >    </xsl:for-each>
> ></xsl:template>
> >
> >i would like to change it to something like the code below, which doesn't
> >output anything. This way i don't need to repeat the inner most code
since
> >its the same for each. any ideas?
> >
> ><xsl:template match="tblMIM">
> >    <xsl:for-each select="tblMIMCompanies">
> >        <xsl:choose>
> >            <xsl:when test="$searchby=0">
> >                <xsl:if test="tblMIMSubSectors[@subsectorID=$subsector]">
> >                    <xsl:apply templates select="tblMIMCompanies"/>
> >                </xsl:if>
> >            </xsl:when>
> >            <xsl:when test="$searchby=1">
> >                <xsl:if test="tblMIMSubSectors[@sectorID=$sector]">
> >                    <xsl:apply templates select="tblMIMCompanies"/>
> >                </xsl:if>
> >            </xsl:when>
> >        </xsl:choose>
> >    </xsl:for-each>
> ></xsl:template>
> >
> ><xsl:template match="tblMIMCompanies">
> >    <xsl:value-of select="@name"/>
> >    ...
> ></xsl:template>
> >
> >the xml looks like this
> >
> ><tblMIM>
> >    <tblMIMCompanies name="A Ltd" ...>
> >        <tblMIMSubSectors subsectorID="55" sectorID="3"/>
> >    </tblMIMCompanies>
> >    <tblMIMCompanies name="Z Ltd" ...>
> >        <tblMIMSubSectors subsectorID="56" sectorID="3"/>
> >    </tblMIMCompanies>
> ></tblMim>
> >
> >
> >regards
> >Luke Ambrogio
> >
> >p.s. thanks in advance

Current Thread