xsl-list
[Top] [All Lists]

[xsl] dynamic template caller problems

2006-07-30 10:55:09
I got the following XML-File:

<root>
  <page1 template="template_a">
    ...
  </page1>
  <page2 template="template_b">
    ...
  </page2>
  <page3 template="template_b">
    ...
  </page3>
  ...
</root>

As you can see, the root element contains numerous nodes with different 
node-names. These nodes have an attribute, called "template" which indicates 
with which XSL-Template they should be transformed.

I have already written a "Master"-XSL-File which gets already the requested 
node from a given path and also the related template.
Now there's the problem to call the related template from the "Master"-XSL-File.

For example (this is my idea):

  User request: /page2/

  PHP & XSL-Solution returns /root/page2/ as the related XPath. (done)

  XSL lookups related template: "template_b" (done)

  XSL calls/applies the related template. (???)

  Called template is used for the following transformations (done)




What my current xsl-file looks like:

...

<!-- "master" template - calls related template -->
<xsl:template match="/">

  ...

  <xsl:value-of select="$template" /> <!-- e.g. 'template_b' -->

  <!-- This will not work, since name= always requires a QName :( -->
  <xsl:call-template name="$template" />

  <!-- ??? how to call/apply the related template ??? -->

</xsl:template>

...

External stylesheet imported from master-file:

...

<xsl:template name="template_b">  <!-- what about match= here?? 'Cause this 
template can be used for all nodes adding the attribute template="template_b" 
...  -->
  <h1>template_b successfully called!</h1>
</xsl:template>

<xsl:template name="template_a"...


My question is, how I realize this idea of a dynamic template caller best. 
Thanks in advance, S. Renault.
-- 


Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen!
Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer

--~------------------------------------------------------------------
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>
--~--