xsl-list
[Top] [All Lists]

[xsl] grouping problem

2009-04-22 01:06:45
Hi All,

I need to group the input.

Input:

<root>
  <num>This chapter is..:</num>
  <test>A class is a module of Java code:</test>
  <section>or</section>
  <title>Java 5.0</title>
  <test>The Java programming language</test>
  <p>Write Once, Run Anywhere.</p>
  <num>Java j2ee</num>
  <p>Broad Responsibilities:...</p>
  <num>Job Description Perform Oracle...</num>
</root>

Expected output:

<msgs>
  <msg>
     <num>This chapter is..:</num>
     <import>
        <test>A class is a module of Java code:</test>
        <title>Java 5.0</title>
        <section>or</section>
        <test>The Java programming language</test>
     </import>
     <p>Write Once, Run Anywhere.</p>
  </msg>
  <msg>
     <num>Java j2ee</num>
     <p>Broad Responsibilities:...</p>
  </msg>
  <msg>
     <num>Job Description Perform Oracle...</num>
  </msg>
</msgs>


I tried with the below stylesheet.

<xsl:template match="root">
<msgs>
<xsl:for-each-group select="*"
group-starting-with="*[starts-with(name(), 'num')]">
<msg>
<xsl:apply-templates select="." mode="msg"/>
<xsl:for-each-group select="current-group() except ."
group-ending-with="test[last()]">
<xsl:apply-templates select="." mode="msg"/>
<import>
<xsl:apply-templates select="current-group() except ." mode="msg"/>
</import>
</xsl:for-each-group>
</msg>
</xsl:for-each-group>
</msgs>
</xsl:template>

Output received:-

<msgs>
   <msg>
      <num>This chapter is..:</num>
      <import>
         <test>A class is a module of Java code:</test>
         <section>or</section>
         <title>Java 5.0</title>
         <test>The Java programming language</test>
      </import>
      <import><!--Import tag need to remove -->
         <p>Write Once, Run Anywhere.</p>
      </import>
   </msg>
   <msg>
      <num>Java j2ee</num>
      <import> <!-- import tag need to remove -->
         <p>Broad Responsibilities:...</p>
      </import>
   </msg>
   <msg>
      <num>Job Description Perform Oracle...</num>
   </msg>
</msgs>

Where I need to modify the stylesheet to get the expected output?


Thanks in advance,
Balaji. M

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