Subject: RE: [xsl] Complex group-by with saxon:evaluate? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 27 Sep 2006 15:57:31 +0100 |
> Ok, so here's the whole relevant xsl snippet > 01: <ul> > 02: <xsl:for-each-group select="bibtex:entry" > group-by="tokenize(normalize-space(*/bibtex:refgroup),' *; *')"> > 03: <xsl:sort select="current-grouping-key()" order="ascending"/> > 04: <li><xsl:value-of select="current-grouping-key()"/></li> > 05: </xsl:for-each-group> > 06: </ul> > > A: > Now, I first replaced line 2 above with: > 02: <xsl:for-each-group select="bibtex:entry" > group-by="tokenize(normalize-space(*[name()=$groupby]),' *; *')"> That should have been group-by="tokenize(normalize-space(*/*[name()=$groupby]),' *; *')" > > C: > (with saxon:evaluate) > I ... changed line 2 above to > 02: <xsl:for-each-group select="bibtex:entry" > group-by="tokenize(normalize-space(saxon:evaluate('*/$groupby' > )),' *; *')"> That should have been group-by="tokenize(normalize-space(saxon:evaluate(concat('*/', $groupby)),' *; *')" Variables don't work by textual substitution, even in saxon:evaluate! You must first construct an expression that contains the element name in a position where an element name is expected, then you must evaluate the expression you have constructed. The concat() constructs the expression, the saxon:evaluate() evaluates it. Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Complex group-by with sax, Moritz Ringler | Thread | [xsl] Re: processing text nodes one, Dimitre Novatchev |
Re: [xsl] Opera's JavaScript API fo, Frans Englich | Date | Re: [xsl] zap some node, Davide Antoni |
Month |