xsl:variable(n)
Viennamade
- xml
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
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
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>