[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Grouping problem
Ok I've hacked this together, it gets all possible combos then filters them down: <xsl:variable name="pairs" select="//pair"/> <xsl:variable name="combos" as="element(table)*"> <xsl:for-each select="$pairs"> <xsl:variable name="outer" select="."/> <xsl:for-each select="$pairs[not(. is $outer)]"> <table> <xsl:for-each select="$outer, ."> <xsl:sort select="."/> <xsl:copy-of select="."/> </xsl:for-each> </table> </xsl:for-each> </xsl:for-each> </xsl:variable> <xsl:template match="/"> <root> <xsl:for-each-group select="$combos[count(distinct-values(.//player)) = 4]" group-by="."> <xsl:copy-of select="."/> </xsl:for-each-group> </root> </xsl:template> On 15 August 2011 16:00, graham.heath <graham.heath@xxxxxxxxx> wrote: > Okay Andrew, > > I forgot to write out all the permutations :-) > You could say that the example was cut down a tad too far.. > <table> > > <pair> > <player>player1</player> > <player>player4</player> > </pair> > <pair> > <player>player2</player> > <player>player3</player> > </pair> > </table> > > > > In your example output, where should the pair: >> >> <pair> >> <player>player1</player> >> <player>player4</player> >> </pair> >> >> go? >> >> >> >> On 15 August 2011 14:38, graham.heath<graham.heath@xxxxxxxxx> wrote: >>> >>> Hello mega brains, >>> >>> I have an xml grouping problem that has so far defeated me. >>> >>> Given the xml >>> <pairings> >>> <pair> >>> <player>player1</player> >>> <player>player2</player> >>> </pair> >>> <pair> >>> <player>player1</player> >>> <player>player3</player> >>> </pair> >>> <pair> >>> <player>player1</player> >>> <player>player4</player> >>> </pair> >>> <pair> >>> <player>player2</player> >>> <player>player3</player> >>> </pair> >>> <pair> >>> <player>player2</player> >>> <player>player4</player> >>> </pair> >>> <pair> >>> <player>player3</player> >>> <player>player4</player> >>> </pair> >>> </pairings> >>> >>> is it possible to group pairs such that each player occurs only once in >>> each >>> group? >>> <table> >>> <pair> >>> <player>player1</player> >>> <player>player2</player> >>> </pair> >>> <pair> >>> <player>player3</player> >>> <player>player4</player> >>> </pair> >>> </table> >>> <table> >>> <pair> >>> <player>player1</player> >>> <player>player3</player> >>> </pair> >>> <pair> >>> <player>player2</player> >>> <player>player4</player> >>> </pair> >>> </table> >>> >>> I was of the opinion that some form of xsl:for-each-group would suffice >>> but >>> have been unable to devise a group-by expression that works.. >>> <xsl:for-each-group select="pairings/pair" >>> group-by="count(distinct-values(player))=1"> >>> <table> >>> <xsl:apply-templates select="current-group() "/> >>> </table> >>> </xsl:for-each-group> >>> >>> Many thanks >>> >>> Hector > > -- Andrew Welch http://andrewjwelch.com
|
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
|