[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: for-each-group
OK, I think I get it. You are grouping on a string derived from the node name instead of the node itself. This doesn't work for my general intent, because the other elements may not all be the same. For example, I might have this: <steps> <step> <para>Intro stuff</para> <para>More intro stuff</para> <figure/> <figure/> <para>Conclusion stuff</para> <table>More conclusion stuff</table> <para>More conclusion stuff</para> </step> </steps> and I would want the three elements following the last figure to be in a single group. But now that I see what you are doing, I will try to work it out. Thanks. Rick From: Michael Kay mike@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Sent: Wednesday, March 28, 2018 12:06 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: for-each-group Try group-adjacent="concat(local-name(), if (self::figure) then position() else 0))" which will work for your example though it may not match your general intent... Michael Kay Saxonica On 28 Mar 2018, at 16:53, Rick Quatro rick@xxxxxxxxxxxxxx <mailto:rick@xxxxxxxxxxxxxx> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx <mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> > wrote: Hi All, I have a <step> element that looks something like this: <steps> <step> <para>Intro stuff</para> <para>More intro stuff</para> <figure/> <figure/> <para>Conclusion stuff</para> <para>More conclusion stuff</para> </step> </steps> I want 4 separate groups: 1) First two <para> elements. 2) First <figure> 3) Second <figure> 4) Last two <para> elements. Here is my stylesheet: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl=" <http://www.w3.org/1999/XSL/Transform> http://www.w3.org/1999/XSL/Transform" xmlns:xs=" <http://www.w3.org/2001/XMLSchema> http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="/steps"> <xsl:apply-templates select="step"/> </xsl:template> <xsl:template match="step"> <xsl:for-each-group select="*" group-starting-with="figure"> <xsl:message select="count(current-group())"></xsl:message> </xsl:for-each-group> </xsl:template> </xsl:stylesheet> I get the first two groups, but the last two <para> elements are part of the last <figure>'s group instead of being separate. I tried using group-by="figure" but I don't get any output. Any help would be appreciated. Thank you very much. Rick Rick Quatro Carmen Publishing Inc. <mailto:rick@xxxxxxxxxxxxxxx> rick@xxxxxxxxxxxxxxx FrameMaker toys: <http://www.frameexpert.com/store> www.frameexpert.com/store 585-366-4017 <http://www.mulberrytech.com/xsl/xsl-list> XSL-List info and archive EasyUnsubscribe (by email) XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> EasyUnsubscribe <-list/612310> (by email <> )
|
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
|