RE: [xsl] Can grouping here the solution ?

Subject: RE: [xsl] Can grouping here the solution ?
From: Robby Pelssers <Robby.Pelssers@xxxxxxx>
Date: Mon, 21 Nov 2011 20:25:07 +0100
No this will not work...

<xsl:for-each group select="pagenumber eq page"  group-by="page" >
</xsl:for-each-group>

<!-- first of all you are using a Boolean expression in your select clause
whereas you want to use a predicate which in this case would be
Select="page[your predicate]"

But you are really not interested in having just groups of pagenumbers.  You
want to have groups of entries so it still needs to be

<!-- now the select expression depends on the context but assuming you are
inside the parent 'display-articles' matching template then you can do
something like -->

<xsl:param name="pageNumber"/>


<xsl:template match="display-articles">
  <xsl:for-each-group select="entry" group-by="page">
    <!-- only handle grouped entries if the grouping-key which is page equals
our page parameter -->
    <xsl:if test="current-grouping-key() eq $pageNumber">
       <xsl:apply-templates select="current-group()"/> <!-- we tell the
processor to continue handling the entries of THIS (current) group.
    </xsl:if>
  </xsl:for-each-group>
</xsl:template>

<xsl:template match="entry">
  <!-- here is where you want to do the heavy lifting and transforming your
entries -->
</xsl:template>

Hope this gives a bit of insight,
Robby

-----Original Message-----
From: Roelof Wobben [mailto:rwobben@xxxxxxxxxxx]
Sent: Monday, November 21, 2011 8:14 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Can grouping here the solution ?


Hello,



Supposed I only want to check the page number.

Can this then work.





<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns="http://www.w3.org/1999/xhtml"; version="2.0 />

<xsl:variable name="page"/> <!-- this has to be filled with the value of page
in the xml file  -->

<xsl:variable name="pagenumber /> <! on some way I have this to fill with the
url paramater @value which contains the 2005-02 --->

xsl:for-each group select="pagenumber eq page"  group-by="page" />

   <!-- Do display here   -->

<xsl: for-each />



Roelof





> From: Robby.Pelssers@xxxxxxx
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Date: Mon, 21 Nov 2011 19:10:15 +0100
> Subject: RE: [xsl] Can grouping here the solution ?
>
> Ok Ken, thx for the advice. I actually never used to do so but at some point
in time I figured it would express more clearly the intent. I guess I should
just always assume this by default to safe on typing.
>
> -----Original Message-----
> From: G. Ken Holman [mailto:gkholman@xxxxxxxxxxxxxxxxxxxx]
> Sent: Monday, November 21, 2011 6:52 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Can grouping here the solution ?
>
> In all of my professional work with XSLT I have very rarely ever had
> to address text() nodes individually.
>
> At 2011-11-21 18:41 +0100, Robby Pelssers wrote:
> >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
>
> In your example above where you have "datum/text()" and
> "page/text()", you are better served by using simply "datum" and "page".
>
> Consider if your user has the following:
>
> <datum>2003<!--OCR read this '3' as an '8'-->-05-02</datum>
>
> The expression "substring(datum,6,2)" evaluates as "05" as expected.
>
> The expression "substring(datum/text(),6,2)" triggers a runtime error
> because of supplying more than one node for the first argument.
>
> Remember in XPath that the value of an element is the concatenation
> of that element's descendent text nodes.
>
> I tell my students if they ever think they need to address a text
> node directly, to think again because they probably don't.
>
> I hope this is helpful.
>
> . . . . . . . . . . Ken
>
>
> --
> 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