xsl-list
[Top] [All Lists]

Re: Positional Grouping Problem

2005-08-05 04:42:30

I'd use keys for this, something like

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
 
<xsl:output method="xml" indent="yes" /> 
   
<xsl:key name="z" match="Z" use="string(preceding-sibling::Z[.='YES'][1])"/>

<xsl:template match="/X">  
  <X>
     <xsl:apply-templates select="Y" />        
  </X> 
</xsl:template>
 
<xsl:template match="Y">
   <Y>
   <xsl:for-each 
select="Z[generate-id()=generate-id(key('z',string(preceding-sibling::Z[.='YES'][1])))]">
    <group>
      <xsl:copy-of 
select="key('z',string(preceding-sibling::Z[.='YES'][1]))[not(.='YES')]"/>
    </group>
      <xsl:copy-of 
select="key('z',string(preceding-sibling::Z[.='YES'][1]))[(.='YES')]"/>
   </xsl:for-each>
   </Y>
</xsl:template>



 </xsl:stylesheet>

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--