Hi Bill,
I'm not absolutely sure what you want... but I think you are saying...
1) select the rows based on distinct <EQUIP_TYPE>
2) but only where the <EQUIP_TYPE> is not 'empty'
3) and where any one of the rows within that distinct <EQUIP_TYPE> value has
an <AUTOMATED> of 'YES'
If so, then perhaps you need something like...
<xsl:for-each select="row[EQUIP_TYPE/text()]
[generate-id() =
generate-id(key('tools-by-type',EQUIP_TYPE))]
[key('tools-by-type',EQUIP_TYPE)/AUTOMATED = 'YES']">
(nb. the predicates are respective to the numbered filter conditions above).
BTW, you are better to use the generate-id() version of the Muenchian
Technique as it generally performs better than the count() version of the
same technique.
Hope this helps
Marrow
http://www.marrowsoft.com - home of Xselerator (XSLT IDE and debugger)
http://www.topxml.com/Xselerator
"Bill Sneddon" <bs******@yahoo.com> wrote in message
news:bd**********@ngspool-d02.news.aol.com...
I am using the for-each below to build a table where the header is
a unique nonblank EQUIP_TYPE. This works well.
What I would like to do is not execute the for loop on on EQUIP_TYPE
unless one of the AUTOMATED tags equals YES.
I can change the data so that each row whould contain a tag that
shows if the EQUIP_TYPE has an AUTOMATED member but that seems wasteful.
<xsl:key name="tools-by-type" match="row" use="EQUIP_TYPE"/>
<xsl:template match="document">
<xsl:for-each select="row[count(. | key('tools-by-type', EQUIP_TYPE)[1])
= 1 and EQUIP_TYPE[string-length()>0 ] ">
sample of the XML
<document>
<row rowNumber="1">
<EQUIP_TYPE>ASH</EQUIP_TYPE>
<TOOL_NAME>ASHZ01ED</TOOL_NAME>
<AUTOMATED>YES</AUTOMATED>
</row>
<row rowNumber="2">
<EQUIP_TYPE>ASH</EQUIP_TYPE>
<TOOL_NAME>ASHZ02ED</TOOL_NAME>
<AUTOMATED>YES</AUTOMATED>
</row>
</document>