XML Knoten mit XSL Variable ansprechen
Thomas
- xsl
Ich habe folgendes Problem:
Ich baue mir in einer Variable einen Knotennamen zusammen - jetzt schaffe ich es aber nicht den Knoten per XSL mit dem Inhalt der Variable anzusprechen:
1. Baue mir meine Variable zusammen:(in diesem Fall 'komptyp1')
<xsl:variable name="typ" select='concat("komptyp",$counter)'/>
2. Spreche den Knoten an:
<composer>
<xsl:attribute name="type"> <xsl:value-of select="$typ" /> </xsl:attribute>
</composer>
Die Ausgabe im XML erzeugt mir danach jedoch nicht den Knoten sondern schreibt mir einfach die Variable raus. Wie kann ich den Knoten ansprechen?
So sieht die Ausgabe aus:
<composer type="komptyp1">
Hallo Thomas,
Die Ausgabe im XML erzeugt mir danach jedoch nicht den Knoten sondern schreibt mir einfach die Variable raus. Wie kann ich den Knoten ansprechen?
Z. B mittels: child::*[local-name() = $typ]
xsl:attribute ist übrigens nicht nötig:
<composer type="{child::*[local-name() = $typ]}">
<!-- ... -->
</composer>
Grüße,
Thomas
<composer type="{child::*[local-name() = $typ]}">
<!-- ... -->
</composer>
Jo, das war genau was ich brauchte ;) thx
Aber eine Frage hab ich noch: Wenn der Rückgabewert aus dem Knoten leer ist ( nix drinnen steht - "") - das der Knoten nicht ausgegeben wird...
Hallo Thomas,
Aber eine Frage hab ich noch: Wenn der Rückgabewert aus dem Knoten leer ist ( nix drinnen steht - "") - das der Knoten nicht ausgegeben wird...
<xsl:if test="$whatever != ''">
<!-- ... -->
</xsl:if>
oder
<xsl:if test="string-length($whatever) > 0">
<!-- ... -->
</xsl:if>
Bei der konditionalen Ausgabe von Attributen kann hier xsl:attribute innerhalb von xsl:if wiederum nützlich sein.
Grüße,
Thomas
<xsl:if test="$whatever != ''">
<!-- ... -->
</xsl:if>[/code]
ahh, ich habs immer mit:
<xsl:if test="$whatever">
<!-- ... -->
</xsl:if>
probiert ;/
danke für die hilfe