[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Grouping Problems XSLT2.0
It looks to me like <xsl:for-each-group select="para" group-starting-with="*[class='epigraphpara' or (class='subsection1para' and inline)]"> (then having done hte grouping you need to inspect the first element of each group to see what element to output) Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Jeff Sese [mailto:jsese@xxxxxxxxxxxx] > Sent: 14 March 2007 09:47 > To: Xsl-List > Subject: Grouping Problems XSLT2.0 > > Hi, > > I have this flat structure: > > <section> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphsource">...</para> > <para class="subsection1para"><inline > class="subsection1title">...</inline></para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para"><inline > class="subsection1title">...</inline></para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > </section> > > How can I achieve this using xsl:for-each-group: > > <section> > <epigraph> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphpara">...</para> > <para class="epigraphsource">...</para> > </epigraph> > <subsection1> > <title><para class="subsection1para"><inline > class="subsection1title">...</inline></para></title> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > </subsection1> > <subsection1> > <title><para class="subsection1para"><inline > class="subsection1title">...</inline></para></title> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > <para class="subsection1para">...</para> > </subsection1> > </section> > > I must group para[@class=("epigraphpara", "epigraphsource")] > into an <epigraph> element. The para[@class="epigraphsource"] > can either appear 1st or last. The > para[@class="subsection1para"] must be group for every > para[@class="subsection1para"][child::inline[@class="subsectio > n1title"]]. > > I have this template so far: > > <template match="section"> > <xsl:for-each-group select="node()" group-adjacent="@class"> > <xsl:choose> > <xsl:when test="current-grouping-key() eq 'epigraphpara'"> > <epigraph> > <xsl:apply-templates select="current-group()"/> > </epigraph> > </xsl:when> > <xsl:otherwise> > <xsl:apply-templates select="current-group()"/> > </xsl:otherwise> > </xsl:choose> > </xsl:for-each-group> > </template> > > And I'm stuck at this point cause I don't know how can I > include the other elements. Hope someone can give me ideas on > how to work this out. > > TIA! > > -- Jeff
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|