RE: [xsl] Processing an element only if there are no better optio ns

Subject: RE: [xsl] Processing an element only if there are no better optio ns
From: "Passin, Tom" <tpassin@xxxxxxxxxxxx>
Date: Thu, 22 May 2003 11:09:24 -0400
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[@name=current()/@Type]/@priority'/>
</xsl:apply-templates>

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread