xsl-list
[Top] [All Lists]

[xsl] two-level grouping xslt 2.0

2008-02-28 08:24:45
I have been having trouble with this grouping problem:

Input:
<book>
<bodymatter>
        <story>
                <cluster_num>Cluster ONE</cluster_num>
                <cluster_head>What Influences a Decision?</cluster_head>
                <thinking_skill>Thinking Skill analyzing</thinking_skill>
        </story>
        <story>
                <pagenum>13</pagenum>
        </story>
        <imggroup>
<img src="DecisionsDecisions3-web-images/Field%20boy% 20final_fmt.jpeg" alt="missing image file"/>
        <prodnote/></imggroup>
        <story>
                <pagenum>14</pagenum>
        </story>
        <story>
                <story-title>Playing God</story-title>
                <author>Ouida Sebestyen</author>
                <p class="initial-paragraph">He was ...</p>
<p>So he wasn’t going to get away without saying good-bye after all...</p>
                <!--multiple story, image, and page elements edited out-->

        <story>
                <story-title>TLA</story-title>
                <author>Jane McFann</author>
                <p class="initial-paragraph">I trudged down the hallway of 
...</p>
                <p ....</p>
                <!--etc-->

        <story>
                <cluster_num>Cluster TWO</cluster_num>
                <cluster_head>Good Decision or Bad Decision?</cluster_head>
                <thinking_skill>Thinking Skill evaluating</thinking_skill>
        </story>
        <story>
                <pagenum>51</pagenum>
        </story>
        <imggroup>
<img src="DecisionsDecisions3-web-images/school%20final_fmt.jpeg" alt="missing image file"/>
        <prodnote/></imggroup>
        <story>
                <pagenum>52</pagenum>
        </story>
        <story>
                <story-title>A Kind of Murder</story-title>
                <author>Hugh Pentecost</author>
                <p class="initial-paragraph">...</p>
</bodymatter>
</book>

I would like to group each <cluster_num> inside <level1> elements and <story-title> inside <level2> elements

Here is one of the template rules I have tried:

<xsl:template match="bodymatter">
<bodymatter>
<xsl:for-each-group select="*" group-starting-with="story [child::cluster_num]"> <!--for some reason "story/cluster_num" does not catch it-->
        <level1 class="unit">
<xsl:attribute name="unitnum"><xsl:value-of select="position()"/></ xsl:attribute><xsl:text>
                </xsl:text>
<xsl:for-each-group select="current-group()/*" group-starting- with="story[child::story-title]">
                <level2 class="selection">
                        <xsl:apply-templates select="current-group()"/>
                </level2>
        </xsl:for-each-group>
<xsl:apply-templates select="current-group()"/>
</level1><xsl:text>
</xsl:text>
</xsl:for-each-group>
</bodymatter>
</xsl:template>

This template rule matches <level1> just fine; <level2> not so much:

<bodymatter>
<level1 class="unit" unitnum="1">
                <level2 class="selection">
<cluster_num>Cluster ONE</cluster_num>
<cluster_head>What Influences a Decision?</cluster_head>
<thinking_skill>Thinking Skill analyzing</thinking_skill>

<!--no <story-title> elements grouped-->

I appreciate all the help this group gives.

Terry


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>