Subject: RE: how to always call a template at the end of xsl:template
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 21 Oct 2003 20:58:34 +0100
|
In XSLT 2.0 you can do
<xsl:template match="*" mode="#all" priority="10">
<xsl:next-match/>
<xsl:call-template name="logRowId"/>
</xsl:template>
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Xiaocun Xu
> Sent: 21 October 2003 18:19
> To: xsl-list
> Subject: how to always call a template at the end of
> xsl:template
>
>
> Hi,
>
> I need to log row ID for error reporting and this
> has to be done at end of all rows regardless of
> template mode. The obvious way is to add
> <xsl:call-template name="logRowId"/> at end of each of
> the <xsl:template match="row"> regardless of mode, the
> problem is maintainence as I need to pepper this call
> to all row templates (there are a number of row
> templates with different modes) and I need to continue
> remember add this call at end of each new row template
> mode in the future. Is there a clean way to always
> call template logRowId at end of <xsl:template
> match="row"> regardless of mode? Sample source XML
> and XSLT below.
>
> thanks,
> Xiaocun
>
> Source XML:
> <row row="7">
> <cell column="1">host</cell>
> <cell column="3">fsc1_BA1</cell>
> <cell column="4">unacknowledged</cell>
> <cell column="5">rfx</cell>
> <cell column="7">lead</cell>
> </row>
> <row row="9">
> <cell column="1">respondent</cell>
> <cell column="2">s1</cell>
> <cell column="3">s1_AM1</cell>
> <cell column="4">unacknowledged</cell>
> <cell column="5">rfx</cell>
> </row>
>
>
> XSLT:
> <xsl:apply-templates select="//row[@row < 8]"
> mode="host"/>
> <xsl:apply-templates select="//row[@row > 8]" mode="respondent"/>
>
> <xsl:template match="row" mode="host">
> <!-- skip unnecessary details -->
> <xsl:call-template name="logRowId"/>
> </xsl:template>
> <xsl:template match="row" mode="respondent">
> <!-- skip unnecessary details -->
> <xsl:call-template name="logRowId"/>
> </xsl:template>
>
> <!-- log row ID for error reporting -->
> <xsl:template name="logRowId">
> <xsl:element name="Logs">
> <xsl:attribute name="rowID"><xsl:value-of
> select="@row"/></xsl:attribute>
> </xsl:element>
> </xsl:template>
>
> __________________________________
> Do you Yahoo!?
> The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|