[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Conditional String Substitution
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|