xsl-list
[Top] [All Lists]

Re: String replace special case

2006-02-13 09:53:46
BTW, and i'm sorry for all the posts, the second bug is this: the result

<?xml version="1.0" encoding="UTF-8"?>
list_entidadeprocessos.aspx?k=PAI&amp;entidade_k=&amp;processo_k=XX0001

should be

<?xml version="1.0" encoding="UTF-8"?>
list_entidadeprocessos.aspx?k=PAI&amp;entidade_k=&amp;processo_k=xx0001

Any hint?

On 13/02/06, António Mota <amsmota(_at_)gmail(_dot_)com> wrote:
Here´s the full case test:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
        <xsl:template name="replace-values">
                <xsl:param name="textfrom"/>
                <xsl:param name="textwhere"/>
                <!--xsl:variable name="textfrom" 
select="concat($textfrom0,'&amp;')"/-->
                <xsl:variable 
name="lower">abcdefghijklmnopqrstuvwxyz</xsl:variable>
                <xsl:variable 
name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
                <xsl:choose>
                        <xsl:when test="contains($textfrom, '{')">
                                <xsl:variable name="lookfor"
select="substring-before(substring-after($textfrom,'{'),'}')"/>
                                <xsl:variable name="before" 
select="substring-before($textfrom,
concat('{',$lookfor,'}'))"/>
                                <xsl:variable name="after" 
select="substring-after($textfrom,
concat('{',$lookfor,'}'))"/>
                                <xsl:variable name="value">
                                        <xsl:variable name="ulookfor" 
select="translate($lookfor, $lower,
$upper)"/>
                                        <xsl:variable name="llookfor" 
select="translate($lookfor, $upper,
$lower)"/>
                                        <xsl:variable name="utextwhere" 
select="translate($textwhere,
$lower, $upper)"/>
                                        <xsl:variable name="ltextwhere" 
select="translate($textwhere,
$upper, $lower)"/>
                                        <xsl:choose>
                                                <xsl:when
test="substring-before(substring-after($utextwhere,concat($ulookfor,'=')),'&amp;')">
                                                        <xsl:value-of
select="substring-before(substring-after($utextwhere,
concat($ulookfor,'=')),'&amp;')"/>
                                                </xsl:when>
                                                <xsl:when
test="substring-before(substring-after($ltextwhere,concat($llookfor,'=')),'&amp;')">
                                                        <xsl:value-of
select="substring-before(substring-after($ltextwhere,
concat($llookfor,'=')),'&amp;')"/>
                                                </xsl:when>
                                                <xsl:when 
test="substring-after($utextwhere, concat($ulookfor,'='))">
                                                        <xsl:variable 
name="stest" select="substring-after($utextwhere,
concat($ulookfor,'='))"/>
                                                        <xsl:if 
test="not(starts-with($stest,'&amp;'))">
                                                                <xsl:value-of 
select="substring-after($utextwhere,
concat($ulookfor,'='))"/>
                                                        </xsl:if>
                                                </xsl:when>
                                                <xsl:when 
test="substring-after($ltextwhere, concat($llookfor,'='))">
                                                        <xsl:variable 
name="stest" select="substring-after($ltextwhere,
concat($llookfor,'='))"/>
                                                        <xsl:if 
test="not(starts-with($stest,'&amp;'))">
                                                                <xsl:value-of 
select="substring-after($ltextwhere,
concat($llookfor,'='))"/>
                                                        </xsl:if>
                                                </xsl:when>
                                        </xsl:choose>
                                </xsl:variable>
                                <xsl:value-of select="$before"/>
                                <xsl:value-of select="$value"/>
                                <xsl:call-template name="replace-values">
                                        <xsl:with-param name="textfrom" 
select="$after"/>
                                        <xsl:with-param name="textwhere" 
select="$textwhere"/>
                                </xsl:call-template>
                        </xsl:when>
                        <xsl:otherwise>
                                <xsl:value-of select="$textfrom"/>
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>


        <xsl:template match="/">
                <xsl:call-template name="replace-values">
                        <xsl:with-param name="textfrom"
                                        
select="'list_entidadeprocessos.aspx?k=PAI&amp;entidade_k={ENTIDADE_K}&amp;processo_k={PROCESSO_K}'"/>
                        <xsl:with-param name="textwhere"
select="'?businessclass=PROCESSO&amp;ENTIDADE_K=&amp;processo_k=xx0001'"/>
                </xsl:call-template>
        </xsl:template>
</xsl:stylesheet>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>