Subject: Re: [xsl] Conditional String Substitution From: Nathan Potter <ndp@xxxxxxxxxxxxxxxxxxxx> Date: Fri, 25 Apr 2008 10:30:12 -0700 |
Is there any particular reason you have to use XSLT 1.0? This kind of thing
is much easier in 2.0. It more-or-less reduces to
replace(@xlink:href, '\.xml$', '.html')
Michael Kay http://www.saxonica.com/
-----Original Message----- From: Nathan Potter [mailto:ndp@xxxxxxxxxxxxxxxxxxxx] Sent: 25 April 2008 18:23 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Cc: Nathan Potter Subject: [xsl] 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
============================================================ 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
============================================================ 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, Michael Kay | Thread | Re: [xsl] Conditional String Substi, Dimitre Novatchev |
RE: [xsl] Conditional String Substi, Michael Kay | Date | [xsl] Web app customization - XSLT , Michael Ludwig |
Month |