Subject: Re: [xsl] Determine file extension of path stored in variable From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Mon, 27 Dec 2004 09:53:15 -0800 (PST) |
You can also try a recursive approach.. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:variable name="lcpath" select="'/images/dir.path/file.png'" /> <xsl:template match="/"> <xsl:variable name="ext"> <xsl:call-template name="get-file-extension"> <xsl:with-param name="path" select="$lcpath" /> </xsl:call-template> </xsl:variable> <xsl:value-of select="$ext" /> </xsl:template> <xsl:template name="get-file-extension"> <xsl:param name="path"/> <xsl:choose> <xsl:when test="contains($path, '/')"> <xsl:call-template name="get-file-extension"> <xsl:with-param name="path" select="substring-after($path, '/')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="substring-after($path, '.')" /> </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> Please note the use of ' in <xsl:variable name="lcpath".. This way, contents of variable will be treated as literal string. The way you have used it.. <xsl:variable name="lcpath" select="/images/dir.path/file.png" /> , the variable is bound to a XPath expression.. I hope, you mean literal string.. You may test the above XSL as - java net.sf.saxon.Transform file.xsl file.xsl Regards, Mukul --- John <john-xsl-list@xxxxxxxx> wrote: > What is the best way to determine the extension of a > file when the > webroot-relative path is stored in a variable, > assuming the path may > contain any number of "." characters (so I can't use > substring-after)? > For instance if $lcpath contains > /images/dir.path/file.png how do I set > $ext to be "png"? Below is the best I have been > able to come up with - > suggestions greatly appreciated. > > <xsl:variable name="lcpath" > select="/images/dir.path/file.png" /> > > <xsl:variable name="pos"> > <xsl:choose> > <xsl:when test="substring( $lcpath, > string-length( $lcpath ) - 5, 1 > ) = '.'">4</xsl:when> > <xsl:when test="substring( $lcpath, > string-length( $lcpath ) - 4, 1 > ) = '.'">3</xsl:when> > <xsl:when test="substring( $lcpath, > string-length( $lcpath ) - 3, 1 > ) = '.'">2</xsl:when> > <xsl:when test="substring( $lcpath, > string-length( $lcpath ) - 2, 1 > ) = '.'">1</xsl:when> > <xsl:otherwise>0</xsl:otherwise> > </xsl:choose> > </xsl:variable> > <xsl:variable name="ext" select="substring( $lcpath, > string-length( > $lcpath ) - $pos )" /> __________________________________ Do you Yahoo!? All your favorites on one personal page Try My Yahoo! http://my.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Determine file extension of p, John | Thread | Re: [xsl] Determine file extension , John |
Re: [xsl] Radio Button Values, Thorr Giddings | Date | RE: [xsl] Re: Transformations betwe, Pieter Reint Siegers |
Month |