Hallo,
Mh, ich habe das jetzt genau so umgesetzt, aber es funktioniert leider nicht. Woran könnte das liegen?
Ich lasse mir den Paramter vor der for-each-Schleife testweise mit value-of ausgeben und es wird nichts ausgegeben. Und es steht auch nichts im HTML-Quellcode nach der Transformation. :-/
Wenn ich dein XML-Code: http://forum.de.selfhtml.org/archiv/2006/2/t122765/#m789794 richtig im Kopf habe, hat das KapitelRef-Element keinen Textinhalt, also kann auch nichts an der Stelle ausgegeben werden.
Quellcode:
<xsl:template match="KapitelRef">
<xsl:call-template name="KnotenKaRefKopie">
<xsl:with-param name="pKnotenKaRefKopie" select="." />
<!--</xsl:with-param>-->
</xsl:call-template>
</xsl:template><xsl:template name="KnotenKaRefKopie">
<xsl:param name="pKnotenKaRefKopie" />
<xsl:value-of select="$pKnotenKaRefKopie" />
Gibt eben nichts aus, weil das Element keinen Text enthält. Ein
<xsl:value-of select="name($pKnotenKaRefKopie)" /> sollte ein "KapitelRef" zurückgeben.
<xsl:for-each select="$pKnotenKaRefKopie">
<xsl:value-of select="." />
</xsl:for-each>
Gibt eben nichts aus, weil das Element (das ist das aktuelle <KapitelRef> keinen Text enthält. Es wird quasi so gemacht:
template match: <KapitelRef>
tue hier für alle aktuelle-KapitelRef etwas.
Hier greift for-each in diesem Fall auch nur genau ein einziges mal, nämlich immer bei dem KapitelRef-Element für das das Template instanziiert wird, denn es gibt immer nur ein aktuelles Element (hier ist also context-node (das Element in dem du dich befindest) = current-node (das Element, das gerade abgearbeitet wird))
das Obige zu erweitern:
template match <KapitelRef>
ein <KapitelRef>-Element (mit ID 1) gefunden:
instanziere Template für <KapitelRef id="1">
tue hier für alle aktuelle-<KapitelRef id="1"> etwas (gibts ja aber nur einmal)
»»<xsl:with-param name="pKnotenKaRefKopie" select=".//p">
Wofür steht denn hier das p?
Keine Ahnung ;-) Ich dachte das "p" soll auf ein <p>-Element hindeuten.
Was möchtest du eigentlich ausgeben?
Grüße
Thomas