Subject: Re: [xsl] Conditional String Substitution From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Fri, 25 Apr 2008 11:46:35 -0700 |
> I need to look at the value of the attribute "href" and determine if it ends > in the suffix ".xml" > > If so then I need to replace the ".xml" suffix with a ".html" suffix. > > I got it to work using a pretty convoluted set of XPath expressions in > conjunction with xsl:if but I think that I am missing something... This can be accomplished with a single XPath 1.0 expression: concat(substring(@x, 1, string-length(@x) -4 * (substring(@x, string-length(@x)-3) = '.xml') ), substring('.html', 1 div (substring(@x, string-length(@x)-3) = '.xml') ) ) -- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence. --------------------------------------- To invent, you need a good imagination and a pile of junk ------------------------------------- Never fight an inanimate object ------------------------------------- You've achieved success in your field when you don't know whether what you're doing is work or play On Fri, Apr 25, 2008 at 10:22 AM, Nathan Potter <ndp@xxxxxxxxxxxxxxxxxxxx> wrote: > > > Greetings, > > I need to do some string manipulation of an attribute value using XSLT. > > I need to look at the value of the attribute "href" and determine if it ends > in the suffix ".xml" > > If so then I need to replace the ".xml" suffix with a ".html" suffix. > > I got it to work using a pretty convoluted set of XPath expressions in > conjunction with xsl:if but I think that I am missing something... > > Is there a more straight forward way of accomplishing this? > > > Example(s): > > <xsl:template match="thredds:catalogRef"> > > <xsl:variable name="href" select="./@xlink:href" /> > <xsl:variable name="linkSuffix" > select="substring($href,string-length($href) - 3)" /> > <xsl:variable name="linkBody" > select="substring($href,1,string-length($href) - 4)" /> > > <xsl:if test="$linkSuffix='.xml'"> > <xsl:value-of select="$indent"/><a > href="{concat($linkBody,'.html')}" ><xsl:value-of select="./@xlink:title"/> > /</a> > </xsl:if> > > <xsl:if test="not($linkSuffix='.xml')"> > <xsl:value-of select="$indent"/><a href="{$href}" ><xsl:value-of > select="./@xlink:title"/> /</a> > </xsl:if> > > </xsl:template> > > > > I used a bunch of variables in the example simply to make it more readable, > the example could be condensed to: > > <xsl:template match="thredds:catalogRef"> > > <xsl:if test="substring(./@xlink:href,string-length(./@xlink:href) - > 3)='.xml'"> > <a > href="{concat(substring(./@xlink:href,1,string-length(./@xlink:href) - > 4),'.html')}" ><xsl:value-of select="./@xlink:title"/> /</a> > </xsl:if> > > <xsl:if > test="not(substring(./@xlink:href,string-length(./@xlink:href) - 3))"> > <a href="{./@xlink:href}" ><xsl:value-of > select="./@xlink:title"/> /</a> > </xsl:if> > <br/> > > </xsl:template> > > Thanks! > > Nathan > > > > > > > ============================================================ > Nathan Potter Oregon State University, COAS > ndp at coas.oregonstate.edu 104 Ocean. Admin. Bldg. > 541 737 2293 voice Corvallis, OR 97331-5503 > 541 737 2064 fax
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Conditional String Substi, Nathan Potter | Thread | Re: [xsl] Conditional String Substi, Nathan Potter |
[xsl] Web app customization - XSLT , Michael Ludwig | Date | [xsl] Creating dynamic spreadsheets, Hewitt, Cheryl |
Month |