RE: [xsl] Integrated sort using different elements
2009-02-19 12:31:16
When you talk of an element with no monogr/author, do you mean the
monogr/author element is absent, or do you mean the element is present and
its value is empty? Being present but empty would account for the results
you are describing.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Quinn Dombrowski [mailto:qdombrow(_at_)uiuc(_dot_)edu]
Sent: 19 February 2009 17:16
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Integrated sort using different elements
Hi Ken,
Thanks for the tip. A bit earlier, I tried the
<xsl:sort select="
( monogr/author, analytic/author, monogr/editor, monogr/title )[1]"/>
and it produced some kind of weird results. First it listed
the ones with analytic/author but no monogr/author. Then the
ones with a monogr/title, and no author anywhere. Then it
alphabetized all the ones with monogr/author. (In my smaller
test set, there didn't happen to be any editors.)
I'm not sure what's happening there, but when I did:
<xsl:sort select="concat(monogr[1]/author[1],
analytic[1]/author[1], monogr[1]/editor[1],
monogr[1]/title[1])"/> ([1]'s because there's sometimes
multiple editions with multiple authors)
it sorted everything the way I needed it. I'm not sure if the
data happens to be such that the concat() problem you
mentioned doesn't come up, but one way or another it works.
Thanks everyone for your help! This has really been a life saver.
~Quinn
G. Ken Holman wrote:
At 2009-02-19 10:13 -0600, Quinn Dombrowski wrote:
I'm using 2.0 (sorry, I should've mentioned that), so I'll try
Michael's solution and let you know how it goes...
Before you do so, Quinn .....
At 2009-02-19 10:19 -0500, I wrote:
In XSLT 2.0, choose the first item in a sequence of many items,
priority indicated by the order of your sequence:
<xsl:sort select="
( monogr/author, analytic/author, monogr/editor, monogr/title
)[1]"/>
At 2009-02-19 15:47 +0000, Michael Kay wrote:
Would it work to sort on the concatenation? -
<xsl:sort select="concat(monogr/author, analytic/author,
monogr/editor, monogr/title"/>
I think the sequence solution is safer than the
concatenation solution
because if more than one field is present, then the initial
characters
of a following field, tacked on to the final characters of
a preceding
field, will but the record out of order.
Consider the following:
<biblStruct id="b1">
<monogr>
<author>abc</author>
...
<analytic>
<author>xyz</author>
...
<biblStruct id="b2">
<monogr>
<author>abcdef</author>
Using the sequence approach would put "b1" before "b2" in
the result
because "abc" is before "abcdef", while using the concatenation
approach would put "b2" before "b1" in the result because
"abcdef" is
before "abcxyz".
I hope this illustrates an important issue that was
neglected in your
decision.
. . . . . . . . . . Ken
--
Upcoming hands-on XQuery, XSLT, UBL & code list training classes:
Brussels, BE 2009-03; Prague, CZ 2009-03, http://www.xmlprague.cz
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman
mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [xsl] Integrated sort using different elements, Quinn Dombrowski
- Re: [xsl] Integrated sort using different elements, G. Ken Holman
- RE: [xsl] Integrated sort using different elements, Houghton,Andrew
- RE: [xsl] Integrated sort using different elements, Michael Kay
- RE: [xsl] Integrated sort using different elements, Houghton,Andrew
- Re: [xsl] Integrated sort using different elements, Quinn Dombrowski
- RE: [xsl] Integrated sort using different elements, Houghton,Andrew
- Re: [xsl] Integrated sort using different elements, G. Ken Holman
- Re: [xsl] Integrated sort using different elements, Quinn Dombrowski
- RE: [xsl] Integrated sort using different elements,
Michael Kay <=
- Re: [xsl] Integrated sort using different elements, Quinn Dombrowski
- Re: [xsl] Integrated sort using different elements, G. Ken Holman
- Re: [xsl] Integrated sort using different elements, Florent Georges
- RE: [xsl] Integrated sort using different elements, Michael Kay
- Re: [xsl] Integrated sort using different elements, Quinn Dombrowski
- Re: [xsl] Integrated sort using different elements, Syd Bauman
- Message not available
- RE: [xsl] Integrated sort using different elements, G. Ken Holman
RE: [xsl] Integrated sort using different elements, Michael Kay
|
|
|