[xsl] Re: String replace special case

Subject: [xsl] Re: String replace special case
From: António Mota <amsmota@xxxxxxxxx>
Date: Mon, 13 Feb 2006 16:53:46 +0000
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, Antsnio Mota <amsmota@xxxxxxxxx> wrote:
> Here4s 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,'=')),'&a
mp;')">
>                                                         <xsl:value-of
> select="substring-before(substring-after($utextwhere,
> concat($ulookfor,'=')),'&amp;')"/>
>                                                 </xsl:when>
>                                                 <xsl:when
>
test="substring-before(substring-after($ltextwhere,concat($llookfor,'=')),'&a
mp;')">
>                                                         <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;pr
ocesso_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>

Current Thread