Thomas J.S.: XSL / copy-of mit Parameter übergeben...

Beitrag lesen

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