PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit xsl einzelnen knoten wählen


Bhaba
19.11.2004, 17:54
hallo,
vorab, ich mach mich gerade erst an xsl heran...

ich hab ein xml mit einer langen liste von childs.
<child id=1>..</child>
<child id=2>..</child>
<child id=3>..</child>
<child id=4>..</child>
...
im xsl kann ich durch die mit xsl:for-each durchlaufen und den/die knoten an ein template übergeben, soweit ok.
der code dazu:

<xsl:for-each select="/*/beitrag/textbloecke/block">
<xsl:if test="position() = 4">
<xsl:if test="string-length(text())">
<xsl:call-template name="txt_right"/>
</xsl:if>
</xsl:if>
</xsl:for-each>

jetzt weiss ich aber schon daß ich ein ganz bestimmten knoten möchte (den 4.) und diesen dem template übergeben - OHNE mit for-each alle zu durchlaufen.
gibts da eine möglichkeit?


Scavi
20.11.2004, 12:08
Probiers doch mit einem XPath-Ausdruck auf die ID.

Bhaba
20.11.2004, 12:46
ich habs probiert mit:

<xsl:if test="/*/beitrag/textbloecke/block[position() = 4]">
<xsl:value-of select="text()">
<!-- <xsl:call-template name="txt_right"/> -->
</xsl:if>

da hatte ich im xsl:if zwar den richtigen Knoten (*Edit* Testausgabe mit /*/beitrag/textbloecke/block[4]/text()" brachte das richtige Ergebnis), aber in der Testausgabe wurde dennoch der Text des ersten Knoten (position() = 1) ausgegeben :confused:
Wie ich schon sagte, ich bin neu darin. Logisch erschiene mir wenn man bei xsl:call-template den Knoten direkt mitgeben könnte - geht aber wohl nicht. Habs auch mit xsl:apply-templates select="XPath", das hat jedoch auch nicht funktioniert, obwohl ich da noch ein bischen rumprobieren werde.