Hallo,
sorry, aber ich muss mich schon wieder an euch wenden. Ich habe mir da so schön gedacht. In meine Daten-XML-Datei schreibe ich mir die Titel für meine einzelnen Kapitel und darunter dann den Namen des Templates, welches aufgerufen wird um das Kapitel dann auch mit Inhalt zu füllen.
Die Daten-XML sieht ungefähr so aus:
<Content>
<SectionTitles manualType="1">
<main>
<title>Einleitung</title>
<sub>
<title>Ziel des Betriebshandbuchs</title>
<template>intention</template>
</sub>
<sub>
<title>Geltungsbereich des Betriebshandbuchs</title>
<template>ambit</template>
</sub>
<sub>
<title>Abgrenzung des Betriebshandbuchs</title> <template>delimitation</template>
</sub>
</main>
</SectionTitles>
</Content>
In der zugehörigen XSL wird das alles durchgelaufen und an der entsprechenden Stelle soll das Template aufgerufen werden:
<xsl:for-each select="$SectionTitles/main">
<section>
<title><xsl:value-of select="title"/></title>
<xsl:variable name="maintemp">
<xsl:value-of select="template"/></xsl:variable>
<xsl:value-of select="$maintemp"/>[1]
<xsl:call-template name="$maintemp"/>[2]
<xsl:for-each select="sub">
<section>
<title><xsl:value-of select="title"/></title>
<xsl:variable name="subtemp">
<xsl:value-of select="template"/></xsl:variable>
<xsl:value-of select="$subtemp"/>[3]
<xsl:call-template name="$subtemp"/>[4]
<xsl:for-each select="subSub">
<section>
<title><xsl:value-of select="title"/></title> <xsl:variable name="subsubtemp">
<xsl:value-of select="template"/></xsl:variable>
<xsl:value-of select="$subsubtemp"/>[5]
<xsl:call-template name="$subsubtemp" />[6]
</section>
</xsl:for-each>
</section>
</xsl:for-each>
</section>
</xsl:for-each>
Bevor unter [1], [3] und [5] der Name des aufzurufenden Template aus Testzwecken ausgeben wird, wird er in eine Variable geschrieben. Funzt auch wunderbar. Wenn ich allerdings versuche die Variable bei [2], [4] und [6] in das Attribut name von <xsl:call-template reinzuschreiben, schmeißt mir der XSLT-Prozessor eine Fehlermeldung: Er könne das Template mit der angegebenen Variable $maintemp, $subtemp, $subsubtemp nicht finden. Klar, er soll ja auch nicht nach der Variable suchen sondern, nach dem Inhalt der Variable. Auch wenn ich geschweifte Klammern um die Variable setze, kommt der selbe Fehler, nur halt die Variablen mit geschweiften Klammern drum rum. Bei anderen Angaben z.B. bei cols="{$cols}" hat das wunderbar geklappt.
Kann ich das denn bei call-template so name="$maintemp" oder name="{$subtemp}" machen ? By the way: die Templatenamen, die in den Variablen stehen, hab ich angelegt. Also finden müsste er sie.
Gruß,
Kerstin