Forum Doku Wiki Blog

Forumsarchiv 2007, März
xsl:call-template verschachteln

archivierte Beiträge lesen

  1. (XSL) xsl:call-template verschachteln von Katharina, 21. 03. 2007, 15:17

xsl:call-template verschachteln

Der folgende Beitrag wurde am 21. 03. 2007, 15:17 Uhr von Katharina veröffentlicht.

Hallo,

ich möchte gerne mehrere xsl:call-templates ineinander verschachteln. D.h. ich möchte einem named template eine variable übergeben, die ein anderes call-template Ergebnis enthält.

Ist das überhaupt möglich und wenn ja wie?

Das Ganze soll beispielsweise so aussehen:
-------------------------------------------------------------------
<xsl:call-template name="m">
  <xsl:with-param name="s" select="'big'"/>
  <xsl:with-param name="t">
    <xsl:call-template name="f">
      <xsl:with-param name="inputId" select="'mail{$nr}backLink'"/>
      <xsl:with-param name="inputText" select="'Abbrechen'"/>
    </xsl:call-template>
  </xsl:with-param>
</xsl:call-template>
-------------------------------------------------------------------

An das Template mit dem Namen m übergebe ich 2 Parameter: ein statischer Parameter s und ein Parameter t, der HTML Code enthält, nämlich den, der vom Template f generiert wurde.

Danke für Eure Hilfe,
Katharina

xsl:call-template verschachteln

Der folgende Beitrag wurde am 21. 03. 2007, 15:34 Uhr von Thomas J.S. veröffentlicht.

Hallo,

> ich möchte gerne mehrere xsl:call-templates ineinander verschachteln. D.h. ich möchte einem named template eine variable übergeben, die ein anderes call-template Ergebnis enthält.
>
> Ist das überhaupt möglich und wenn ja wie?

Ja, das kannst du machen. Genau so, wie du es in deinem Beispiel gemacht hast, nur muss du darauf achten, dass die Paramter für den 2. call-templates (z.B. $nr im <xsl:with-param name="inputId" select="'mail{$nr}backLink'"/>) tatsächlich zur Verfügung stehen.

Grüße
Thomas

xsl:call-template verschachteln

Der folgende Beitrag wurde am 21. 03. 2007, 15:46 Uhr von Katharina veröffentlicht.

Hallo Thomas,

> Ja, das kannst du machen. Genau so, wie du es in deinem Beispiel gemacht hast, nur muss du darauf achten, dass die Paramter für den 2. call-templates (z.B. $nr im <xsl:with-param name="inputId" select="'mail{$nr}backLink'"/>) tatsächlich zur Verfügung stehen.

Irgendetwas scheint bei mir allerdings nicht zu funktionieren. Hier nochmal ein Beispiel-Template für f:

Das template f liefert beispielsweise einen html input tag:
-------------------------------------------------------------------
<xsl:template name="f">
  <input type="button" id="i" value="v"/>
</xsl:template>
-------------------------------------------------------------------

Das HTML Element soll als Parameter (t) an das Template m übergeben werden. Aber es kommt nichts an. Muß ich den Input Tag irgendwie als String zurückliefern? Mit xsl:text drum rum geht es allerdings nicht!

Hast Du eine Idee?
Grüße,
Katharina

xsl:call-template verschachteln

Der folgende Beitrag wurde am 21. 03. 2007, 16:47 Uhr von Thomas J.S. veröffentlicht.

Hallo,

> > Ja, das kannst du machen. [...]
>
> Irgendetwas scheint bei mir allerdings nicht zu funktionieren. Hier nochmal ein Beispiel-Template für f:
>
> Das template f liefert beispielsweise einen html input tag:
> -------------------------------------------------------------------
> <xsl:template name="f">
>   <input type="button" id="i" value="v"/>
> </xsl:template>
> -------------------------------------------------------------------
>
> Das HTML Element soll als Parameter (t) an das Template m übergeben werden. Aber es kommt nichts an. Muß ich den Input Tag irgendwie als String zurückliefern? Mit xsl:text drum rum geht es allerdings nicht!
>

OK, das Problem ist, dass du hier tatsächlich Ergebniselement(e) für die Ausgabe erzeugst. Du musst diese dann kopieren (einfach als String ausgeben geht nicht).

<xsl:template name="m">
  <xsl:param name="s"/>
  <xsl:param name="t">

   <irgendeinElement>
      <xsl:copy-of select="$t" />
   </irgendeinElement>

</xsl:call-template>

Falls das auch nicht so funktioniert wie erwartet, muss du schon mehr aus deinem XSL zeigen.

Grüße
Thomas

xsl:call-template verschachteln

Der folgende Beitrag wurde am 22. 03. 2007, 08:51 Uhr von Katharina veröffentlicht.

Hallo Thomas,

>
> OK, das Problem ist, dass du hier tatsächlich Ergebniselement(e) für die Ausgabe erzeugst. Du musst diese dann kopieren (einfach als String ausgeben geht nicht).
>
> <xsl:template name="m">
>   <xsl:param name="s"/>
>   <xsl:param name="t">
>
>    <irgendeinElement>
>       <xsl:copy-of select="$t" />
>    </irgendeinElement>
>
> </xsl:call-template>

danke für Deine Hilfe, mit <xsl:copy-of> klappt das Ganze ;-)

Schöne Grüße,
Katharina

xsl:call-template verschachteln

Der folgende Beitrag wurde am 21. 03. 2007, 15:38 Uhr von dey veröffentlicht.

Hallo,

> Das Ganze soll beispielsweise so aussehen:
> -------------------------------------------------------------------
> <xsl:call-template name="m">
>   <xsl:with-param name="s" select="'big'"/>
>   <xsl:with-param name="t">
>     <xsl:call-template name="f">
>       <xsl:with-param name="inputId" select="'mail{$nr}backLink'"/>
>       <xsl:with-param name="inputText" select="'Abbrechen'"/>
>     </xsl:call-template>
>   </xsl:with-param>
> </xsl:call-template>
> -------------------------------------------------------------------
>
> An das Template mit dem Namen m übergebe ich 2 Parameter: ein statischer Parameter s und ein Parameter t, der HTML Code enthält, nämlich den, der vom Template f generiert wurde.

Was ist denn in t alles variabel und was ist fix?

bydey
--
-- bydey ist die Signatur und Verabschiedung, nicht der Nick --

-- Navigate all your PHP web projects with  PHP Project Browser--

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4