Subject: [xsl] Group Techniques by xslt From: "Joga Singh Rawat" <jrawat@xxxxxxxxxxxxxx> Date: Wed, 2 Dec 2009 15:02:11 +0530 |
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[@class='bdy']"> <bdy> <xsl:for-each-group select="*" group-starting-with="p[@class='Head1']|p[@class='Head2']"> <xsl:apply-templates select="." mode="group" /> </xsl:for-each-group> </bdy> </xsl:template> <xsl:template match="p[@class='Head1']" mode="group"> <sc1> <ti><xsl:apply-templates/></ti> <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='Head2']"> <xsl:apply-templates select="current-group()" mode="group"/> </xsl:for-each-group> </sc1> </xsl:template> <xsl:template match="p[@class='Head2']" mode="group"> <sc2> <ti><xsl:apply-templates/></ti> <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='Head3']"> <xsl:apply-templates select="current-group()" mode="group"/> </xsl:for-each-group> </sc2> </xsl:template> <xsl:template match="p[@class='Head3']" mode="group"> <sc3> <ti><xsl:apply-templates/></ti> <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='Head4']"> <xsl:apply-templates select="current-group()" mode="group"/> </xsl:for-each-group> </sc3> </xsl:template> <xsl:template match="p[@class='Head4']" mode="group"> <sc4> <ti><xsl:apply-templates/></ti> <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='Head5']"> <xsl:apply-templates select="current-group()" mode="group"/> </xsl:for-each-group> </sc4> </xsl:template> <xsl:template match="p[@class='Head5']" mode="group"> <sc5> <ti><xsl:apply-templates/></ti> <xsl:for-each-group select="current-group() except ." group-starting-with="p[@class='Head6']"> <xsl:apply-templates select="current-group()" mode="group"/> </xsl:for-each-group> </sc5> </xsl:template> Thanks ...JSR
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Why doesn't this simple X, Wendell Piez | Thread | Re: [xsl] Group Techniques by xslt, Martin Honnen |
Re: [xsl] Why doesn't this simple X, ohaya | Date | Re: [xsl] Why doesn't this simple X, G. Ken Holman |
Month |