Viennamade: xsl:variable(n)

Hallo Forum!

Ich will in einer xsl-Datei Dateinamen von Extensions trennen und in 2 Variable schreiben. Also name=autoexec, extension=bat.

Mit substring-after und -before will (wollte) ich's machen und so habe ich diesen Code getippt:

<xsl:variable name="name">
  xsl:choose
    <xsl:when test="contains($fullname,'.')"><xsl:value-of select="substring-before($fullname,'.')" /></xsl:when>
  </xsl:choose>
</xsl:variable>

Und wie bring ich da die Variable extension rein? Oder muß ich die 5 Zeilen nochmals (mit substring-after) tippen?

Vielen Dank
Viennamade

  1. Hi,

    <xsl:variable name="name">
      xsl:choose
        <xsl:when test="contains($fullname,'.')"><xsl:value-of select="substring-before($fullname,'.')" /></xsl:when>
      </xsl:choose>
    </xsl:variable>

    Warum verwendest Du xsl:choose, wenn Du nur eine Möglichkeit hast?
    Da würde ich xsl:if nehmen:

    <xsl:variable name="name">
      <xsl:if test="contains($fullname,'.')"><xsl:value-of select="substring-before($fullname,'.')" /></xsl:if>
    </xsl:variable>

    Du könntest zwar theoretisch beide xsl:variable in das xsl:if reinziehen, aber dann wäre die Variable auch nur innerhalb des xsl:if bekannt.

    Und wie bring ich da die Variable extension rein? Oder muß ich die 5 Zeilen nochmals (mit substring-after) tippen?

    Nein, Du kannst auch Copy/Paste verwenden ;-)
    Und wieviele Zeilen es sind, hängt davon ab, wieviele Zeilenumbrüche Du machst, man könnte das ganze ja auch in eine einzige Zeile werfen...

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
    1. Erstmals danke für die Antwort, jetzt funktionierts. Warum ich den funktionierenden Code herstelle? Weil mir als XSLT-Newbie nix besseres passieren kann wenn jemand von Euch sagt: "Moment ... so gehts besser!"
      Die (beim ersten Posting verkürzte dargestellte) Aufgabe: Zu "zerlegende" Datenelemente können so aussehen:

      "./seite1.htm" oder "./graphics/bild1.gif" (max. ein Unterordner)

      Entstehen soll eine Tabelle,

      Pfad       |Dateiname|Typ
      -------------------------
      ./         |Seite1   |htm
      ./graphics/|bild1    |gif

      Beste Grüße
      Viennamade

      <xsl:for-each select="content/element">
       <tr>
        <xsl:variable name="fullname">
         <xsl:value-of select="substring(name,3)" />
        </xsl:variable>

      <xsl:variable name="ordner">
         xsl:choose
          <xsl:when test="contains($fullname,'/')"><xsl:value-of select="substring-before($fullname,'/')" /></xsl:when>
           xsl:otherwise./</xsl:otherwise>
          </xsl:choose>
        </xsl:variable>

      <xsl:variable name="nametmp">
         xsl:choose
          <xsl:when test="$ordner!='./'"><xsl:value-of select="substring-after($fullname,'/')" /></xsl:when>
           xsl:otherwise<xsl:value-of select="$fullname" /></xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <xsl:variable name="dateiname" select="substring-before($nametmp,'.')" />

      <xsl:variable name="extension">
         <xsl:value-of select="substring-after($nametmp,'.')" />
        </xsl:variable>

      <td><xsl:value-of select="$dateiname" /></td>
        <td><xsl:value-of select="$extension" /></td>
        <td><xsl:value-of select="$ordner" /></td>
      </xsl:for-each>