Whoops, in my recent post, I forgot this part.
i.e. If there is a Type1 product, then don't output Type2 or Type3.
However, if there is no Type1, then output Type2, but not
Type3 if it's
present.
Just change my example (see below) to output only the first of the first
of the sorted types -
<xsl:template match='Product[1]'>
...
</xsl:template>
This will give you just the one product whose priority is the highest,
according to the priorities you have declared. This is what the
original question was about, as I understand it.
Cheers,
Tom P
----------------------------------------------------------------------
I previously posted this -
You can declare your own priorities for sorting like this.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:doc='local:sort'> <!-- arbitrary namespace URI -->
<xsl:variable name='priorities'
select='document("")/xsl:stylesheet/doc:priority/term'/>
<doc:priority>
<term name='Type1' priority='1'/>
<term name='Type2' priority='2'/>
<term name='Type3' priority='3'/>
</doc:priority>
....
Then for sorting, you can use your priorities like so -
<xsl:apply-templates select='Product'>
<xsl:sort data-type='number'
select='$priorities[(_at_)name=current()/@Type]/@priority'/>
</xsl:apply-templates>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list