Subject: Re: [xsl] can't get xsl:sort to work From: David Carlisle <davidc@xxxxxxxxx> Date: Mon, 19 Sep 2005 12:07:41 +0100 |
> Expected select attribute or > non empty content not both" but i have a select > attribute. what's wrong with my xsl file. As the error message says: you can't have both a select attribute and content. You have a select attribute select="@entry" and content <tr valign="top"> <td><xsl:value-of select="@id"/></td> <td><xsl:value-of select="@entry"/></td> <td><xsl:variable name="x" select="count(.//xref)"/> <xsl:for-each select=".//xref"> <xsl:value-of select="."/> <xsl:if test="position() < $x"> <br/> </xsl:if> </xsl:for-each> </td> </tr> </xsl:sort> You don't want the body of the for-each to be content of the xsl:sort so make that <xsl:sort select="@entry"/> and remove the line </xsl:sort> Note that you have multiple uses of // which is likely to make this code very inefficient in practice. (Unless your XSLT system does some very extensive automatic rewrites. select="//complexarticle | //simplearticle | //dummyarticle"> means search the whole document to arbitrary depth to find all the elements of that name. Are these elements really arbitrarily deeply nested? Also <xsl:variable name="x" select="count(.//xref)"/> You don't need to find all the xrefs and count them, you can just use last() which is the same number and already calculated. David ________________________________________________________________________ This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] can't get xsl:sort to wor, UlyLee | Thread | Re: [xsl] can't get xsl:sort to wor, UlyLee |
Re: [xsl] can't get xsl:sort to wor, Joris Gillis | Date | Re: [xsl] can't get xsl:sort to wor, UlyLee |
Month |