Subject: RE: xsl:call-imports?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 25 Oct 2004 18:15:01 +0100
|
It's a rational idea, but you can achieve the same effect by using a match
template with say match="*" and some special mode, and simply not using the
node that it happens to match on.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Mario Caprino [mailto:mariocaprino@xxxxxxxxxxx]
> Sent: 25 October 2004 17:18
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: xsl:call-imports?
>
> Hi,
>
> I'm structuring my XSLT stylesheets and find myself missing an
> <xsl:call-imports> element. I feel I need such an element
> for the exact
> same reason that <xsl:apply-imports> is so usefull.
>
> My specific case for wanting such an element is;
> My main stylesheet includes all my default templates. For
> the language
> specific versions of the stylesheet I would like to send the language
> specific text as parameters to the default template.
>
> Heres an example;
>
> __default.xsl__:
>
> <!-- main template -->
> <xsl:template match="/">
> ...
> <xsl:call-templates name="facts" />
> ...
>
> <xsl:apply-templates />
> </xsl:template>
>
>
> <!-- default implementation of "facts" -->
> <xsl:template name="facts">
> <xsl:param name="h" />
> <html:div class="shadow">
> <html:div class="facts">
> <html:h2><xsl:value-of select="$h" /></html:h2>
> <html:p>...</html:p>
> </html:div>
> </html:div>
> </xsl:template>
>
> As you see the default template contains alot of tags I would
> like to avoid
> copying around for each language version, and minimal
> language specific text
> to insert. I would now like to write in my langugae specific
> stylesheet the
> following code;
>
>
> __en-UK.xsl__:
>
> <xsl:import href="default.xsl" />
>
> <xsl:template name="facts">
> <xsl:call-imports name="facts">
> </xsl:with-param name="h" select="'Did you know...'" />
> </xsl:call-imports>
>
> But without any <xsl:call-imports> I need to find
> alternatives to accomplish
> this;
>
> 1) Use template match and apply-imports instead. In my case
> this will not
> work as I am creating the surrounding elements to the page
> content, thus it
> doesn't fit with a particular tag in the source document.
>
> 2) Using global variables and overide those. This gets quite
> messy once the
> stylesheet gets bigger.
>
> 3) Give different names to the language specific and the
> default template.
> In my case it does not make sense to call the default template except
> through the language specific template, thus it might be the best
> suggestion.
>
> I still feel a <xsl:call-imports> element would be the _best_
> solution, and
> do not see why it is not included is XSLT. Is it because I
> am trying to use
> XSLT in a inappropriate fashion?
> Am I overlooking any other alternative for solving my
> problem? What would
> you do to solve the above mentioned problem?
>
> Thank you for your help.
>
> Best regards,
> Mario Caprino
>
> _________________________________________________________________
> MSN Hotmail http://www.hotmail.com Med markedets beste
> SPAM-filter. Gratis!
|