Subject: [xsl] String replace special case From: António Mota <amsmota@xxxxxxxxx> Date: Mon, 6 Feb 2006 17:00:41 +0000 |
I wrote this special case of string replace and tought to post this to go to the list archives, maybe it'll be usefull to someone. It's used to replace some keywords in a url-like string with the results from another url-like string, for example, with list_entidadeprocessos.aspx?k=PAI&entidade_k={ENTIDADE_K}&processo_k= {PROCESSO_K} and ?businessclass=PROCESSO&k=K00047&processo_k=XX0001' will give list_entidadeprocessos.aspx?k=PAI&entidade_k=K00047&processo_k=XX0001 In my concrete case the first string is retrieved from a database where some app definitions are stored, and the secons is the qwery string of the actual page where the transformation is being made. It has two minor bugs that none of the users have found, i'll fix then one of theses days :) <xsl:template name="replace-values"> <xsl:param name="textfrom"/> <xsl:param name="textwhere"/> <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,'=')),'&')"/> </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,'=')),'&')"/> </xsl:when> <xsl:when test="substring-after($utextwhere, concat($ulookfor,'='))"> <xsl:value-of select="substring-after($utextwhere, concat($ulookfor,'='))"/> </xsl:when> <xsl:when test="substring-after($ltextwhere, concat($llookfor,'='))"> <xsl:value-of select="substring-after($ltextwhere, concat($llookfor,'='))"/> </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>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: RE: RE: [xsl] Parse through a t, cknell | Thread | [xsl] Re: String replace special ca, António Mota |
RE: [xsl] Parse through a table in , Dariusz Borowski | Date | RE: RE: [xsl] Parse through a table, cknell |
Month |