[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Can grouping here the solution ?


Subject: RE: [xsl] Can grouping here the solution ?
From: Roelof Wobben <rwobben@xxxxxxxxxxx>
Date: Mon, 21 Nov 2011 18:20:33 +0000

Thanks, but did ken stated that we schould not use the page/text part or am I
misunderstood this discussion.



Roelof



----------------------------------------
> From: Robby.Pelssers@xxxxxxx
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Mon, 21 Nov 2011 19:07:18 +0100
> Subject: RE: [xsl] Can grouping here the solution ?
>
> I still don't see the problem. The grouping example I gave is done based on
the sample data from your mail.
>
> Nothing is preventing you to check each group for some condition before
applying templates.
>
> <xsl:for-each group select="display-articles/section/entry"
group-by="concat(substring(datum/text(), 1,7), '/', page/text())">
> <!-- this way you group on unique combinations of e.g. strings like
'2005-02/1' -->
> <xsl:if test="current-grouping-key() eq '2005-02/1'">
> <xsl:apply-templates select="current-group()"/>
> </xsl:if>
> </xsl:for-each>
>
> But to me it seems like you don't even need grouping.
>
> Assuming you inject any parameters from the url by setting the predefined
'monthOfYear' and 'page' parameters
>
> <xsl:param name="monthOfYear" as="xs:string"/> <!-- assuming you inject a
string of format '2005-02' -->
> <xsl:param name="page" as="xs:integer"/>
>
> <!-- we only need to handle entries which satisfy both $monthOfYear and
$page
> <xsl:apply-templates
select="display-articles/section/entry[substring(datum/text(), 1,7) eq
$monthOfYear and page/text() eq $page]"/>
>
> Robby
>
> -----Original Message-----
> From: Roelof Wobben [mailto:rwobben@xxxxxxxxxxx]
> Sent: Monday, November 21, 2011 6:53 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Can grouping here the solution ?
>
>
> Thanks but the problem is that the 2005-02 is on the url but the pagenumber
is a xslt variable which is not on the url.
>
>
>
> Roelof
>
>
>
> ----------------------------------------
> > From: Robby.Pelssers@xxxxxxx
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Date: Mon, 21 Nov 2011 18:41:58 +0100
> > Subject: RE: [xsl] Can grouping here the solution ?
> >
> > You can do something like
> >
> > <xsl:for-each group select="display-articles/section/entry"
group-by="concat(substring(datum/text(), 1,7), '/', page/text())">
> > <!-- this way you group on unique combinations of e.g. strings like
'2005-02/1' -->
> > </xsl:for-each>
> >
> > Robby
> >
> > -----Original Message-----
> > From: Roelof Wobben [mailto:rwobben@xxxxxxxxxxx]
> > Sent: Monday, November 21, 2011 6:33 PM
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: RE: [xsl] Can grouping here the solution ?
> >
> >
> > what I try to achieve is this.
> >
> >
> >
> > As you can see I have some articles for testing purposes.
> >
> > I like to display them per month and per page where I can decide how many
articles are displayed.
> >
> > This depends on the month and the page the user is on my website.
> >
> >
> >
> > I hope it's clear what I want.
> >
> >
> >
> > Roelof
> >
> >
> >
> > ----------------------------------------
> > > Date: Mon, 21 Nov 2011 11:45:42 -0500
> > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > > From: gkholman@xxxxxxxxxxxxxxxxxxxx
> > > Subject: RE: [xsl] Can grouping here the solution ?
> > >
> > > At 2011-11-21 16:29 +0000, Roelof Wobben wrote:
> > > >Can I select the group on multiple things
> > >
> > > Yes, by grouping the groups as I showed you.
> > >
> > > >This script does what i need but I don't see how I can take care
> > > >that ony 1 month and 1 page are displayed.
> > >
> > > I do not understand your concern. Can you please post what you want
> > > to display for the XML content you showed us?
> > >
> > > Perhaps the problem is in your choice of the word "grouping". If you
> > > want to only show from your content all of the titles for a given
> > > month and page, then you do not need grouping, you only need filtering.
> > >
> > > I hope the filtering example below helps. It does not rely on grouping.
> > >
> > > . . . . . . . . . . Ken
> > >
> > > t:\ftemp>type roelof.xml
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <display-articles>
> > > <section id="1" handle="blog">Blog</section>
> > > <entry id="1">
> > > <titel handle="zwanger">Zwanger ??</titel>
> > > <datum time="23:00" weekday="5">2005-02-04</datum>
> > > <page>1</page>
> > > <tekst mode="formatted"><p>Hoera, het is zover, eindelijk (...)</p>
> > > </tekst>
> > > </entry>
> > > <entry id="2">
> > > <titel handle="7-weken-echo">7 weken echo</titel>
> > > <datum time="22:00" weekday="1">2005-02-21</datum>
> > > <page>1</page>
> > > <tekst mode="formatted"><p>Ik stond al onder behandeling (...)</p>
> > > </tekst>
> > > </entry>
> > > <entry id="3">
> > > <titel handle="appelgebak">Appelgebak</titel>
> > > <datum time="23:00" weekday="6">2005-02-26</datum>
> > > <page>2</page>
> > > <tekst mode="formatted"><p>Met appelgebak zijn we naar jouw (...)</p>
> > > </tekst>
> > > </entry>
> > > </display-articles>
> > >
> > > t:\ftemp>xslt2 roelof.xml roelof2.xsl roelof.out "month=02" "page=2"
> > >
> > > t:\ftemp>type roelof.out
> > > For month "02" and page "2":
> > > Appelgebak
> > >
> > > t:\ftemp>xslt2 roelof.xml roelof2.xsl roelof.out "month=02" "page=1"
> > >
> > > t:\ftemp>type roelof.out
> > > For month "02" and page "1":
> > > Zwanger ??
> > > 7 weken echo
> > >
> > > t:\ftemp>type roelof2.xsl
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > > version="2.0">
> > > <xsl:output method="text"/>
> > >
> > > <xsl:param name="month" required="yes"/>
> > > <xsl:param name="page" required="yes"/>
> > >
> > > <xsl:template match="display-articles">
> > > <xsl:text>For month "</xsl:text>
> > > <xsl:value-of select="$month"/>
> > > <xsl:text>" and page "</xsl:text>
> > > <xsl:value-of select="$page"/>
> > > <xsl:text>":
> > > </xsl:text>
> > > <xsl:for-each select="entry[substring(datum,6,2)=$month and
page=$page]">
> > > <xsl:value-of select="titel"/>
> > > <xsl:text>
> > > </xsl:text>
> > > </xsl:for-each>
> > > </xsl:template>
> > >
> > > </xsl:stylesheet>
> > > t:\ftemp>
> > >
> > >
> > > --
> > > Contact us for world-wide XML consulting and instructor-led training
> > > Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/t37DVX
> > > Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
> > > G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
> > > Google+ profile: https://plus.google.com/116832879756988317389/about
> > > Legal business disclaimers: http://www.CraneSoftwrights.com/legal


Current Thread
Keywords