[xquery-talk] reversing element ordering, with a caveat
Howard Katz
howardk at fatdog.com
Sun Mar 15 19:44:00 PST 2009
Beautiful. I just removed the value() function following the path ending in
@pubYear, as Saxon returned an "Unknown system function," and it worked
perfectly.
Thanks you,
Howard
_____
From: talk-bounces at x-query.com [mailto:talk-bounces at x-query.com] On Behalf
Of Brian Maso
Sent: Sunday, March 15, 2009 7:24 PM
To: Howard Katz; talk at x-query.com
Subject: Re: [xquery-talk] reversing element ordering, with a caveat
In XQuery, I think its just a matter of running over the distinct values of
//book/@pubYear in descending order. Something like:
(* Maybe there's a more elegant way of getting the sequence of years in
descending order? *)
let $descending-distinct-years := distinct-values(for $v in
//book/@pubYear/value() order by $v descending return $v)
for $year in $descending-distinct-years
return //book[@pubYear = $year]
This will retain original document ordering for elements with the same
@pubYear value, but years will be descending from highest value to lowest.
Brian Maso
On Sun, Mar 15, 2009 at 6:04 PM, Howard Katz <howardk at fatdog.com> wrote:
I have a series of books ordered chronologically by publication date, 1942
to 2009. I want to generate a file in which the books have the reverse
chronological ordering, 2009 to 1942, but with the caveat that books
*within* a particular year need to maintain the original document order
relative to that year. In the following, the catid attributes within a
particular year remain in ascending order after the transformation. (The
catid's are used here only for demonstration purposes; they're not present
in the actual document.)
I'd be happy to see a solution either in XQuery or in XSLT. Here's some
sample input and the output.
Input:
<library>
<book pubYear='1942' catid='1' >
<otherStuff ... /></book>
<book pubYear='1942' catid='2' >
<otherStuff ... /></book>
<book pubYear='1942' catid=' 3 ' >
<otherStuff ... /></book>
...
<book pubYear='2009' catid=' 2011' >
<otherStuff ... /></book>
<book pubYear='2009' catid=' 2012 ' >
<otherStuff ... /></book>
<book pubYear='2009' catid=' 2013 ' >
<otherStuff ... /></book>
</library>
Output:
<library>
<book pubYear='2009' catid=' 2011' >
<otherStuff ... /></book>
<book pubYear='2009' catid=' 2012 ' >
<otherStuff ... /></book>
<book pubYear='2009' catid=' 2013 ' >
<otherStuff ... /></book>
...
<book pubYear='1942' catid=' 1 ' >
<otherStuff ... /></book>
<book pubYear='1942' catid=' 2 ' >
<otherStuff ... /></book>
<book pubYear='1942' catid=' 3 ' >
<otherStuff ... /></book>
</library>
TIA,
Howard
_______________________________________________
talk at x-query.com
http://x-query.com/mailman/listinfo/talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://x-query.com/pipermail/talk/attachments/20090315/f1477ef5/attachment.htm
More information about the talk
mailing list