Subject: [xsl] Avoiding multiple "apply-templates" by creating one variable for the clauses. Is it possible? From: Kate Busch-Petersen <kate.busch-petersen@xxxxxxxxxxxxx> Date: Thu, 20 Aug 2009 10:44:45 +0100 |
Hello, I'm currently working on creating a blog in asp.net, using XML and XSLT 2.0. In the past (working with XSLT 1.0) I've used multiple "apply-templates" to handle all the possible param combinations, but I am looking for a more manageable solution. Current method: <xsl:choose> <xsl:when test="$AuthorId"> <xsl:apply-templates select="//blog[author_id = $AuthorId]"/> </xsl:when> <xsl:when test="$CategoryId"> <xsl:apply-templates select="//blog[category_id = $CategoryId]"/> </xsl:when> <xsl:when test="$AuthorId and $CategoryId"> <xsl:apply-templates select="//blog[author_id = $AuthorId and category_id = $CategoryId]"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="//blog"/> </xsl:otherwise> </xsl:choose> Obviously it's not ideal, and that's with just two params, in theory there could be many more. I was playing around with feeding the values to the "apply-template" using a variable. Something along the lines of: <xsl:variable name="SelectVar"> 1=1 <!-- always true --> <xsl:if test="$AuthorId"> and author_id = <xsl:value-of select="$AuthorId"/> </xsl:if> <xsl:if test="$CategoryId"> and category_id = <xsl:value-of select="$CategoryId"/> </xsl:if> </xsl:variable> and then: <xsl:apply-templates select="//blog[$SelectVar]"/> Of course, this doesn't work. Does anyone have any ideas for a more workable solution? Many thanks, Kate
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] flat list of contents and, Martin Honnen | Thread | Re: [xsl] Avoiding multiple "apply-, Andrew Welch |
Re: [xsl] Creating multiple PDF fil, Eike Jordan | Date | Re: [xsl] Avoiding multiple "apply-, Andrew Welch |
Month |