Subject: Pushing particular Nodes inside an element
Posted By: ROCXY Post Date: 1/3/2006 12:21:24 AM
Hi All,

I have an XML file like below:

<artfront>
<metadata>…….</metadata>
   <journaldata>……</journaldata>
   <author>……………</author>
</artfront>


<artbody>

<section id="s1">
<heading1 level="1">section-1</heading1>

<para>This is ---------para---------text.</para>
<table1>------------Table Text---------------</table>
<!--- First Time-->
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>

 <footnotetext>This is ----------foot---------text</footnotetext>

<subsect id="s1-1">
        
<heading2 level="2">heading2 level 2</heading2>
        
<para>This is ---------para---------text.</para>

        <!--- second time-->
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>
        
<figure1>--------------Figure info  ---------------</figure>
        
    </subsect>

    <subsect id="s1-2">
             <heading2 level="2">heading2 level 2</heading2>
        <para>This is ---------para---------text.</para>
    </subsect>    

<subsect id="s1-3">
    <heading2 level="2">heading2 level 2</heading2>
    <para>This is ---------para---------text.</para>
            
         <subsect id="s1-3-1">
          <heading3 level="3">heading3 level 3</heading2>
          <list>This is ---------list---------text.</list>

                 <!--- third time-->
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>
<procplace>------- proceeding date/place------</procplace>
<proctopic> ------proceeding topic--------------</proctopic>

         <equation> This is ---------equation---------text.</equation>
     </subsect>    
</subsect>        
</section>

Following is XSL used specified by forum:
----------------------------------------
<xsl:template match="*">
 <xsl:copy>
  <xsl:for-each-group select="child::node()" group-adjacent="self::procplace or self::proctopic">
    <xsl:choose>
      <xsl:when test="current-grouping-key()">
        <meeting>
          <xsl:apply-templates select="current-group()"/>
        </meeting>
      </xsl:when>
         <xsl:otherwise>
         <xsl:apply-templates select="current-group()"/>
         </xsl:otherwise>
   </xsl:choose>
   </xsl:for-each-group>
  </xsl:copy>
</xsl:template>

Observed Output - WRONG
-----------------------
<meetings><procplace>------- proceeding date/place------</procdate></meetings>
<meetings><proctopic> ------proceeding topic------</proctopic></meetings>
<meetings><procplace>------- proceeding date/place------</procdate></meetings>
<meetings><proctopic> ------proceeding topic------</proctopic></meetings>
<meetings><procplace>------- proceeding date/place------</procdate></meetings>
<meetings><proctopic> ------proceeding topic------</proctopic></meetings>

Required Output - Correct
-------------------------
<meetings>
<procplace>------- proceeding date/place------</procdate>
<proctopic> ------proceeding topic------</proctopic>
<procplace>------- proceeding date/place ------</procdate>
<proctopic> ------proceeding topic------</proctopic>
</meetings>

The problem is it a set of node (<procplace> and <proctopic>) will be couple which will come like.

\artbody\body1\section\procplace following proctopic
\artbody\procplace following proctopic
\artbody\section\procplace following proctopic

so it will note be a child for any element

I was trying this for more than a week.



I would greatly appreciate any help provided.

Thanks & Regards,
- ROCXY




Reply By: mhkay Reply Date: 1/3/2006 4:10:58 AM
I think the problem is caused by the intervening whitespace text nodes. You can probably solve it by adding <xsl:strip-space elements="*"/>.

Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference
Reply By: ROCXY Reply Date: 1/3/2006 11:21:52 AM
Dear Mr.Michael,

Thanks for your kind reply.

Thanks & Regards,
- ROCXY



Go to topic 37424

Return to index page 737
Return to index page 736
Return to index page 735
Return to index page 734
Return to index page 733
Return to index page 732
Return to index page 731
Return to index page 730
Return to index page 729
Return to index page 728