[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Conditional String Substitution

Subject: Re: Conditional String Substitution
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Fri, 25 Apr 2008 11:46:35 -0700
Re:  Conditional String Substitution
> 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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.