From: Ron V. d. B. <ron...@ho...> - 2003-11-13 16:05:46
|
Hello all, Does anyone know whether it is possible at all to define multiple sort keys for queries with the XMLDB logicsheet or the XMLDB Transformer? Postponing sorting to XSLT processing is no option, since the total result set should be ordered before presenting to the user. The closest I can get is by defining a "sort-by" XPath expression identifying a parent element that happens to contain all child elements I would like to use to control sorting. In my case, the relevant part of the structure is this: <letHeading> <author>...</author> <addressee>...</addressee> <placeLet>...</placeLet> <dateLet>...</dateLet> </letHeading> When specifying <xmldb:for-each select="..." sort-by="letHeading">, this returns a list of results ordered first along their author, then addressee, then placeLet, and finally dateLet information (since the XPath expression evaluates to a concatenation of the string values of all child elements). Yet, this is only a superficial solution, since such an expression allows no other ordering of sort keys than that contained in the source documents. I've tried to change this order by specifying the sort expression as eg. "concat(letHeading/placeLet, letHeading/dateLet, letHeading/author, letHeading/addressee)"; yet this returns following error: org.apache.cocoon.ProcessingException: Failed to execute pipeline.: java.lang.RuntimeException: java.lang.RuntimeException: function not found Nesting of <xmldb:for-each> elements with different "sort-by" expressions does not seem to work either. Does anyone have a working solution or perhaps a clever XPath workaround for the definition of secondary sort keys? Any help or comments are greatly appreciated! Ron -- Ron Van den Branden Project Officer Centrum voor Teksteditie en Bronnenstudie (CTB) Centre for Scholarly Editing and Document Studies Koninklijke Academie voor Nederlandse Taal- en Letterkunde Koningstraat 18 / b-9000 Gent / Belgium http://www.kantl.be/ctb/staff/ron.htm _________________________________________________________________ Chat with your online buddies with MSN Messenger http://messenger.msn.be |