Re: [xsl] Variable in XPath

Subject: Re: [xsl] Variable in XPath
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Wed, 27 Jun 2007 19:39:38 +0200
Garvin Riensche wrote:
Hi Abel,

Thanks a lot for you answer, you gave lots of comments that are usefull for me.

Your solution defintely serves my needs I explained in my first mail. But as I wrote in my second mail there might be lots of attribute-combinations. So I would have to write a template for every possible combination which would make the stylesheed get very large. Maybe that's the only solution. But I would prefer a solutions with one template for all possible combinations like explained in my second mail with some default value for the variables that are not set by commandline.


In addition, if you want an extensible solution, you can consider this as parameter value:


id=2;owner=4;name=john

in which case you do not have to create a new parameter each time you add a new query possibility to your template. You match would then look as follows:

<xsl:variable name="attributes" select="tokenize($query, ';')" />
<xsl:variable name="attr-names"
       select="for $i in $attributes return tokenize($i, '=')[1]" />
<xsl:variable name="attr-values"
       select="for $i in $attributes return tokenize($i, '=')[2]" />


<xsl:template match="class[ deep-equals(@*/name(), $attr-names) and deep-equals(@*string(), $attr-values)]" />

  ... do your thing with the matches ...
</xsl:template>


Come to think of it, this is probably a shorter solution in the long run ;)


Happy coding!

-- Abel Braaksma

Current Thread