Subject: RE: [xsl] Integrated sort using different elements From: "Houghton,Andrew" <houghtoa@xxxxxxxx> Date: Thu, 19 Feb 2009 10:30:53 -0500 |
> From: G. Ken Holman [mailto:gkholman@xxxxxxxxxxxxxxxxxxxx] > Sent: Thursday, February 19, 2009 10:20 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] Integrated sort using different elements > > At 2009-02-19 09:09 -0600, Quinn Dombrowski wrote: > >I'm trying to figure out a way to sort by one of multiple elements, > >with descending priority. > > You create a select expression that chooses the element you want in > the presence or absence of other items. > > >I'm working with a TEI bibliography, and there's no single element > >that all the entries have. Ideally, I'd like to sort by > >monogr/author; but when that's not possible, by analytic/author; if > >not that, monogr/editor; then monogr/title; and so on down the line. > > 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]"/> > > In XSLT 1.0 you might do something along the lines of: > > <xsl:sort select=" > monogr/author | > self::*[not(monogr/author)]/analytic/author | > self::*[not(monogr/author | analytic/author)]/monogr/editor | > self::*[not(monogr/author | analytic/author | > monogr/editor)]/monogr/title"/> I think for XSLT 1.0 you can simplify that select to: <xsl:sort select="(monogr/author|analytic/author)[1]"/> which should also work in XSLT 2.0 without using a sequence. Andy.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Integrated sort using dif, G. Ken Holman | Thread | RE: [xsl] Integrated sort using dif, Michael Kay |
Re: [xsl] Integrated sort using dif, G. Ken Holman | Date | RE: [xsl] pass variables to next fo, Michael Kay |
Month |