Thomas: XML Knoten mit XSL Variable ansprechen

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?

  1. So sieht die Ausgabe aus:
    <composer type="komptyp1">

  2. 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

    1. <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...
      
      1. 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

        1. <xsl:if test="$whatever != ''">
            <!-- ... -->
          </xsl:if>[/code]

          ahh, ich habs immer mit:

          <xsl:if test="$whatever">
          <!-- ... -->
          </xsl:if>

          probiert ;/

          danke für die hilfe