|
Subject: [xsl] Sort list by a combination of elements From: Manuel Strehl <manuel.strehl@xxxxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 21 Dec 2006 14:28:03 +0100 |
Hi.
Consider some kind of bookshelf XML:
<bookshelf>
<series id="LoTR">
<author>Tolkien</author>
</series>
...
<book>
<title>Two Towers</title>
<belongs_to ref="LoTR">
</book>
...
<book>
<title>It</title>
<author>King</author>
</book>
</bookshelf>
So we have <book>s with <author> elements and <book>s with a
<belongs_to> referring to a series of some author.
Problem: Sort the list of books by the author.
Solution: Normally one would write something like <xsl:sort
select="//book/author" />. In this case, I found a solution by
concatenating: <xsl:sort select="concat( //book/author, //series[ @id =
current()/belongs_to/@ref ]/author )" />. This works, BUT it "feels like
a hack", if you know, what I mean.
I would prefer a more XSLT-like solution, that determines, if there is
an <author> element, sorts by this and uses the <series> author as a
fallback. Does anyone know, if and how this could be done? Schematically:
<choose>
<when test="author"><sort select="author">
<otherwise><sort select="series/author">
</choose>
Best Regards
Manuel
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Detecting precedence of s, Abel Braaksma | Thread | Re: [xsl] Sort list by a combinatio, David Carlisle |
| Re: [xsl] XML serializer in XSLT 2., Florent Georges | Date | Re: [xsl] Sort list by a combinatio, David Carlisle |
| Month |