Hi Team,
If someone have a logic to structure a data of unstructred file, please
help. I am clueless. I am new in xslt 2.0.
Input
<div class="bdy">
<p class="Para_FL">Para 1 many <i>inline</i> tags are possible here</p>
<p class="Head2">xx <b>Head2</b>: Introduction</p>
<p class="Para_FL">Para <b>2</b> xxx</p>
<p class="Para_FL">para <i>3</i> xxx </p>
<p class="Head1">Head1: Intro<i>d</i>uction</p>
<p class="Para_FL">Para <b>4</b> xxx </p>
<p class="Para_FL">para <i>5</i> sss</p>
<p class="Head2">Head 2: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>6</b> xxx</p>
<p class="Para_FL">para <i>7</i> sss</p>
<p class="Head2">Head 2: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>8</b> xxx</p>
<p class="Para_FL">para <i>9</i> fff</p>
<p class="Head3">Head 3: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>10</b> vvv</p>
<p class="Para_FL">para <i>11</i> ggg</p>
<p class="Head4">Head 4: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>12</b> ggg</p>
<p class="Para_FL">para <i>13</i> rr</p>
<p class="Head5">Head 5: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>14</b> fff</p>
<p class="Para_FL">para <i>15</i> fff</p>
<p class="Head6">Head 6: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>16</b> ff</p>
<p class="Para_FL">para <i>17</i> tt</p>
<p class="Head2">Head 2: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>18</b> dd</p>
<p class="Para_FL">para <i>19</i> ff</p>
<p class="Head5">Head 5: Intro<u>d</u>uction</p>
<p class="Para_FL">Para <b>20</b> ff</p>
<p class="Para_FL">para <i>21</i> ff</p>
</div>
Required OUTPUT
<bdy>
<p t="fl">Para 1 many <i>inline</i> tags are possible here</p>
<sc1>
<sc2>
<ti>xx <b>Head2</b>: Introduction</ti>
<p t="fl">Para <b>2</b> xxx</p>
<p t="fl">para <i>3</i> xxx </p>
</sc2>
</sc1>
<sc1>
<ti>Head1: Intro<i>d</i>uction</ti>
<p t="fl">Para <b>4</b> xxx </p>
<p t="fl">para <i>5</i> sss</p>
<sc2>
<ti>Head 2: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>6</b> xxx</p>
<p t="fl">para <i>7</i> sss</p>
</sc2>
<sc2>
<ti>Head 2: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>8</b> xxx</p>
<p t="fl">para <i>9</i> fff</p>
<sc3>
<ti>Head 3: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>10</b> vvv</p>
<p t="fl">para <i>11</i> ggg</p>
<sc4>
<ti>Head 4: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>12</b> ggg</p>
<p t="fl">para <i>13</i> rr</p>
<sc5>
<ti>Head 5: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>14</b> fff</p>
<p t="fl">para <i>15</i> fff</p>
<sc6>
<ti>Head 6: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>16</b> ff</p>
<p t="fl">para <i>17</i> tt</p>
</sc6>
</sc5>
</sc4>
</sc3>
</sc2>
</sc1>
<sc1>
<sc2>
<ti>Head 2: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>18</b> dd</p>
<p t="fl">para <i>19</i> ff</p>
<sc3>
<sc4>
<sc5>
<ti>Head 5: Intro<u>d</u>uction</ti>
<p t="fl">Para <b>20</b> ff</p>
<p t="fl">para <i>21</i> ff</p>
</sc5>
</sc4>
</sc3>
</sc2>
</sc1>
</bdy>
XSL
<xsl:template match="div[(_at_)class='bdy']">
<bdy>
<xsl:for-each-group select="*"
group-starting-with="p[(_at_)class='Head1']|p[(_at_)class='Head2']">
<xsl:apply-templates select="." mode="group" />
</xsl:for-each-group>
</bdy>
</xsl:template>
<xsl:template match="p[(_at_)class='Head1']" mode="group">
<sc1>
<ti><xsl:apply-templates/></ti>
<xsl:for-each-group select="current-group() except ."
group-starting-with="p[(_at_)class='Head2']">
<xsl:apply-templates select="current-group()" mode="group"/>
</xsl:for-each-group>
</sc1>
</xsl:template>
<xsl:template match="p[(_at_)class='Head2']" mode="group">
<sc2>
<ti><xsl:apply-templates/></ti>
<xsl:for-each-group select="current-group() except ."
group-starting-with="p[(_at_)class='Head3']">
<xsl:apply-templates select="current-group()" mode="group"/>
</xsl:for-each-group>
</sc2>
</xsl:template>
<xsl:template match="p[(_at_)class='Head3']" mode="group">
<sc3>
<ti><xsl:apply-templates/></ti>
<xsl:for-each-group select="current-group() except ."
group-starting-with="p[(_at_)class='Head4']">
<xsl:apply-templates select="current-group()" mode="group"/>
</xsl:for-each-group>
</sc3>
</xsl:template>
<xsl:template match="p[(_at_)class='Head4']" mode="group">
<sc4>
<ti><xsl:apply-templates/></ti>
<xsl:for-each-group select="current-group() except ."
group-starting-with="p[(_at_)class='Head5']">
<xsl:apply-templates select="current-group()" mode="group"/>
</xsl:for-each-group>
</sc4>
</xsl:template>
<xsl:template match="p[(_at_)class='Head5']" mode="group">
<sc5>
<ti><xsl:apply-templates/></ti>
<xsl:for-each-group select="current-group() except ."
group-starting-with="p[(_at_)class='Head6']">
<xsl:apply-templates select="current-group()" mode="group"/>
</xsl:for-each-group>
</sc5>
</xsl:template>
Thanks
...JSR
--~------------------------------------------------------------------
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>
--~--