Subject: [xsl] Problem Dynamically Building Query String In XSLT 1.0 From: <Trish@xxxxxxxxxxxxxx> Date: Tue, 31 Jul 2007 12:24:54 -0400 |
Hi: I need to construct a query string of an unknown number of parts. I have to use XSLT 1.0. We are also purposefully not using any asp in the template, so I have to rely on XSLT 1.0 functionality alone. My problem is detecting whether or not the element I'm adding to the query string is the first element and therefore requires a "?" in front of it or whether I should use "&" instead. For instance, here's a possible URL that I want to build: pagename.aspx?page=2&sort=default&target=newpagename.aspx When I'm building the string, none or part or all of the possible query string elements may be present. In the interest of keeping the query string as short as possible, I don't want to show any of the elements that don't have values (aye, there's the rub). I also don't want to have one of the elements always present so it is always first and eliminates the problem of whether to add the & or the ?. My attempts so far have been REALLY ugly as they are repetitious and code heavy, as you'll see below, as well as totally unsuccessful. Has anyone else come up with a better way to do this? Here's my last desperate attempt (the variable names used are the possible values for the query string elements and are defined elsewhere). I was trying to change the value of $paramQueryMark by submitting as a parameter to queryMark, but the value of the parameter is lost when I go back to queryBuilder: <xsl:value-of select="$varPage" /> <xsl:call-template name="queryBuilder" /> <xsl:template name="queryBuilder"> <xsl:param name="paramQueryMark" select="'false'" /> <xsl:if test="string($varTarget) or string($varPageNumber) or string($varSortSelected)"> <xsl:text>?</xsl:text> </xsl:if> <xsl:if test="string($varTarget)"> <xsl:if test="$paramQueryMark = 'true'"> <xsl:text>&</xsl:text> </xsl:if> target=<xsl:value-of select="$varTarget" /> <xsl:call-template name="queryMark"> <xsl:with-param name="paramQueryMark" select="'true'" /> </xsl:call-template>d </xsl:if> <xsl:if test="string($varPageNumber) and $varPageNumber != '1'"> <xsl:if test="$paramQueryMark = 'true'"> <xsl:text>&</xsl:text> </xsl:if> page=<xsl:value-of select="$varPageNumber" /> <xsl:call-template name="queryMark"> <xsl:with-param name="paramQueryMark" select="'true'" /> </xsl:call-template> </xsl:if> <xsl:if test="string($varSortSelected)"> <xsl:if test="$paramQueryMark = 'true'"> <xsl:text>&</xsl:text> </xsl:if> sort=<xsl:value-of select="$varSortSelected" /> <xsl:call-template name="queryMark"> <xsl:with-param name="paramQueryMark" select="'true'" /> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template name="queryMark"> <xsl:param name="paramQueryMark" /> </xsl:template> </xsl:stylesheet> Thanks for your help! Trish
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Re: xsl-list Digest 31 Ju, Michael Kay | Thread | RE: [xsl] Problem Dynamically Build, Michael Kay |
Re: [xsl] XSLamenT, Dimitre Novatchev | Date | Re: [xsl] XSLamenT, Justin Johansson |
Month |