ThomasM: attribute aufsplitten

Beitrag lesen

Hallo Dieter,

an ein xml-Element ist ein Attribut angehängt: <tag enum="a,b,c" />

Nun möchte ich jeden einzelnen Teilstring (getrennt wird bei ,) in ein <option> einfügen: ...

XSLT 1.0:

<xsl:variable name="sep" select="','"/><!-- Separator-Zeichen -->  
  
<xsl:template match="tag">  
  <select>  
    <xsl:call-template name="strtmpl">  
      <xsl:with-param name="str" select="concat(@enum,$sep)"/>  
    </xsl:call-template>  
  </select>  
</xsl:template>  
  
<xsl:template name="strtmpl">  
  <xsl:param name="str"/>  
  <xsl:if test="string-length($str) > 0">  
    <option><xsl:value-of select="substring-before($str,$sep)"/></option>  
    <xsl:call-template name="strtmpl">  
      <xsl:with-param name="str" select="substring-after($str,$sep)"/>  
    </xsl:call-template>  
   </xsl:if>  
</xsl:template>

XSLT 2.0:

<xsl:variable name="sep" select="','"/><!-- Separator-Zeichen -->  
  
<xsl:template match="tag">  
  <select>  
    <xsl:for-each select="tokenize(@enum,$sep)">  
      <option><xsl:value-of select="."/></option>  
    </xsl:for-each>  
  </select>  
</xsl:template>

Ergebnis jeweils:

<select>  
  <option>a</option>  
  <option>b</option>  
  <option>c</option>  
</select>

Grüße,
Thomas