xsl-list
[Top] [All Lists]

Re: [xsl] two-level grouping xslt 2.0

2008-02-28 11:06:10
Terry Ofner wrote:
Sorry about the poor xml of the input. It was way too long to include and my edit dropped off some closing </story> tags. I have tried to fix in the output and input below.

The following stylesheet groups by groups starting with story[cluster_num] and then simply processes the groups where story[story-title] have a special template wrapping those elements in a level2 element. That achieves the result you have described.


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

  <xsl:output method="xml" indent="yes"/>

  <xsl:strip-space elements="*"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="bodymatter">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:for-each-group
        select="*"
        group-starting-with="story[cluster_num]">
          <level1 class="unit" unitnum="{position()}">
            <xsl:apply-templates select="current-group()"/>
          </level1>
      </xsl:for-each-group>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="story[story-title]">
    <level2 class="selection">
      <xsl:copy>
        <xsl:apply-templates select="@* | node()"/>
      </xsl:copy>
    </level2>
  </xsl:template>

</xsl:stylesheet>
--

        Martin Honnen
        http://JavaScript.FAQTs.com/

--~------------------------------------------------------------------
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>