[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Re: [xsl] sorting titles w stopwords but w/o value in every title node
Subject: Re: [xsl] sorting titles w stopwords but w/o value in every title node From: "cking" <cking@xxxxxxxxxx> Date: Thu, 2 Sep 2004 14:33:06 +0200 |
Michael Kay wrote: > > > > > <xsl:variable name="output"> > > <xsl:for-each select="//section-02"> > > <xsl:sort > > select="exsl:node-set($sort-titles)/*[@doc-number = > > current()/doc-number]"/> > > If you're lucky, the optimizer will extract > > exsl:node-set($sort-titles)/* > > as a subexpression that can be evaluated outside the loop. > > In case you're not so lucky, it would be better to put it in a variable: > > <xsl:variable name="ref" select="exsl:node-set($sort-titles)/*"/> > <xsl:variable name="output"> > <xsl:for-each select="//section-02"> > <xsl:sort > select="$ref[@doc-number = current()/doc-number]"/> > > Or even better, use a key. > OK! but when I try <xsl:key name="ref-titles" match="exsl:node-set($sort-titles)/*" use="@doc-number"/> Saxon throws an error: "Error in expression exsl:node-set($sort-titles)/*: The only functions allowed in a pattern are id() and key()". I must be doing something wrong there? Anton The $ref variable works fine: <xsl:variable name="output"> <xsl:variable name="ref" select="exsl:node-set($sort-titles)/*"/> <xsl:for-each select="//section-02"> <xsl:sort select="$ref[@doc-number = current()/doc-number]"/> <xsl:sort select="number(concat(substring(arrival-date, 7,4), substring(arrival-date, 1,2), substring(arrival-date, 4,2)))" order="descending"/> <title doc-number="{doc-number}" title="{key('titles', doc-number)}" description="{description}" arrival-date="{arrival-date}"/> </xsl:for-each> </xsl:variable>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] sorting titles w stopword, Michael Kay | Thread | Re: [xsl] sorting titles w stopword, David Carlisle |
[xsl] Output method html, Kaarle Kaila | Date | Re: [xsl] sorting titles w stopword, David Carlisle |
Month |