xsl-list
[Top] [All Lists]

RE: xsl:call-imports?

2004-10-25 10:15:01
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(_at_)hotmail(_dot_)com] 
Sent: 25 October 2004 17:18
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] 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!


--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--





<Prev in Thread] Current Thread [Next in Thread>