[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: *****SPAM***** Using for-each-group on a <day> co

Subject: Re: *****SPAM***** Using for-each-group on a <day> collection to arrange a weekday calendar
From: "Christophe Marchand cmarchand@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 7 Nov 2017 18:39:34 -0000
Re: *****SPAM*****  Using for-each-group on a <day>  co
Replacing your for-each-group by this works correctly for me :

 B B B B B B B B B B B B B  <xsl:variable name="days" as="element(day)+" 
select="descendant::day"/>
 B B B B B B B B B B B B B  <xsl:for-each-group select="$days" 
group-ending-with="day[((count(preceding::day)+1) mod 5) eq 0]">

All the other code has not been changed. Well, a little bit, to display 
Day x... because I have no title in my data.

Best regards,
Christophe

Le 07/11/2017 C  19:02, Michael Friedman sumarimike@xxxxxxxxx a C)critB :
> Greetings,
>
> I am struggling with taking a collection of <day> elements and 
> formatting them in groups of 5, to simulate a weekday calendar in PDF 
> output. I've looked through the archives and not been able to find 
> anything that gets me further than where I am stuck.
>
> XML:
> -------
> <course id="c1">
> <segment id="se1">
> <day id="d1">
> Day 1
> </day>
> <day id="d2">
> Day 2
> </day>
> </segment>
> <segment id="se2">
> <day id="d3">
> Day 3
> </day>
> </segment>
> ...
> </course>
>
> Imagine if you will, two courses. One course has 24 days, a second 
> course has 16 days.
>
> The desired output is a table for course 1:
> Day 1 | Day 2 | Day 3 | Day 4 | Day 5
> Day 6 | Day 7 | Day 8 | Day 9 | Day 10
> Day 11 | Day 12 | Day 13 | Day 14 | Day 15
> Day 16 | Day 17 | Day 18 | Day 19 | Day 20
> Day 21 | Day 22 | Day 23 | Day 24 |
>
> and for course two:
> Day 1 | Day 2 | Day 3 | Day 4 | Day 5
> Day 6 | Day 7 | Day 8 | Day 9 | Day 10
> Day 11 | Day 12 | Day 13 | Day 14 | Day 15
> Day 16 |
>
> Using the XSLT below, I am getting a successful course 1 table (I 
> think by accident), but my course 2 table looks like this:
> Day 1
> Day 2 | Day 3 | Day 4 | Day 5 | Day 6
> Day 7 | Day 8 | Day 9 | Day 10 | Day 11
> Day 12 | Day 13 | Day 14 | Day 15 | Day 16
>
> I could use some help solving. I've gone code-blind. I think it's 
> related to how I am dividing up my group by testing the remainder of 
> the total divided by 5. If I monkey with that calculation I get 
> bizarre results.
>
> XSLT2.0 using Arbortext PE 6.1 (via XSL only transform, so through 
> saxon 9.1.0.5 build 121514):
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:fo="http://www.w3.org/1999/XSL/Format"
> version="2.0">
>
> <xsl:template match="course">
> <xsl:variable name="v_dayCount">
> <xsl:value-of select="count(descendant::day)"/>
> </xsl:variable>
> <fo:block margin-top="12pt">
> <fo:block text-align="center" id="@id">
> <fo:table border="1pt solid black">
> <fo:table-column column-width="100pt"/>
> <fo:table-body>
> <xsl:for-each-group select="descendant::day" 
> group-ending-with="day[(count(preceding::day[ancestor::course[1]])+1) 
> mod 5 = 0]">
> <xsl:sort select="position()" order="ascending" data-type="number"/>
> <fo:table-row height="15pt" background-color="gray" border-top="1pt 
> solid black">
> <xsl:for-each select="current-group()">
> <xsl:apply-templates select="self::day" mode="calendartitle"/>
> </xsl:for-each>
> </fo:table-row>
> </xsl:for-each-group>
> </fo:table-body>
> </fo:table>
> </fo:block>
> </fo:block>
> </xsl:template>
>
> <xsl:template match="day" mode="calendartitle">
> <fo:table-cell border-bottom="1pt solid black" border-right="1pt solid 
> black" display-align="center">
> <fo:block font-size="8pt" text-align="center" font-weight="bold">
> <fo:basic-link internal-destination="@id">
> <xsl:value-of select="title"/>
> </fo:basic-link>
> </fo:block>
> </fo:table-cell>
> </xsl:template>
>
> </xsl:stylesheet>
>
> Kind Regards,
> Michael Friedman [PST time zone]
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <-list/2837134> 
> (by email <>)

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.