|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: sorting titles w stopwords but w/o value in every
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>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|






