Subject: RE: [xsl] 2 columns with special conditions From: "Bjorndahl, Brad" <brad.bjorndahl@xxxxxxxxxxxxxxxx> Date: Thu, 3 May 2007 12:12:55 -0400 |
Hi, I take a direct (non-clever) approach. This works. . . <?xml version='1.0'?> <xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" indent="yes"/> <xsl:template match="/allsteps"> <tables> <xsl:apply-templates /> </tables> </xsl:template> <xsl:template match="steps"> <table> <xsl:for-each select="mc" > <xsl:choose> <xsl:when test="@type = 'F'" > <row> <col><xsl:value-of select="@name" /></col> <xsl:choose> <xsl:when test="following-sibling::mc" > <!-- Not at end --> <xsl:choose> <xsl:when test="following-sibling::mc[1]/@type eq 'C'" > <col><xsl:value-of select="following-sibling::mc[1]/@name" /></col> </xsl:when> <xsl:otherwise> <col /> </xsl:otherwise> </xsl:choose> </xsl:when> <xsl:otherwise> <!-- At end --> <col/> </xsl:otherwise> </xsl:choose> </row> </xsl:when> <xsl:when test="@type = 'C'" > <xsl:choose> <xsl:when test="preceding-sibling::mc" > <!-- Not at beginning --> <xsl:choose> <xsl:when test="preceding-sibling::mc[1]/@type eq 'C'" > <row> <col /> <col><xsl:value-of select="@name" /></col> </row> </xsl:when> </xsl:choose> </xsl:when> <xsl:otherwise><!-- At beginning --> <row> <col/> <col><xsl:value-of select="@name" /></col> </row> </xsl:otherwise> </xsl:choose> </xsl:when> </xsl:choose> </xsl:for-each> </table> </xsl:template> </xsl:transform> . . . on this data: <allsteps> <steps> <mc name="1" type="F"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="C"/> <mc name="5" type="F"/> <mc name="6" type="C"/> </steps> <steps> <mc name="1" type="C"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="C"/> <mc name="5" type="F"/> <mc name="6" type="C"/> </steps> <steps> <mc name="1" type="F"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="F"/> <mc name="5" type="F"/> <mc name="6" type="C"/> </steps> <steps> <mc name="1" type="F"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="F"/> <mc name="5" type="F"/> <mc name="6" type="F"/> </steps> <steps> <mc name="1" type="C"/> <mc name="2" type="C"/> <mc name="3" type="C"/> <mc name="4" type="C"/> <mc name="5" type="C"/> <mc name="6" type="C"/> </steps> </allsteps> Brad Bjorndahl Technical Publications Thermo Fisher Scientific -----Original Message----- From: Sven Waibel [mailto:sven.waibel@xxxxxxxx] Sent: May 3, 2007 10:06 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] 2 columns with special conditions Hi, i have a "little" problem. I try to get a two column layout where all elements with type F live in column one and elements with type C in column two. Special thing is that you have watch the order. How can i achieve case 2 and 3? Thanks in advance Sven xml: case1: <mc name="1" type="F"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="C"/> <mc name="5" type="F"/> <mc name="6" type="C"/> => (first column always type F, second type C) 1 2 3 4 5 6 there is no problem, template works. case2: <mc name="1" type="C"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="C"/> <mc name="5" type="F"/> <mc name="6" type="C"/> => - 1 - 2 3 4 5 6 case3: <mc name="1" type="F"/> <mc name="2" type="C"/> <mc name="3" type="F"/> <mc name="4" type="F"/> <mc name="5" type="F"/> <mc name="6" type="C"/> => 1 2 3 - 4 - 5 6 my xsl: .... <xsl:template match="step"> <xsl:for-each select="descendant::mc[position() mod 2 = 1]"> <tr> <td> <xsl:value-of select="self::node()[@type='F']/@name"/> </td> <td> <xsl:value-of select="following-sibling::node()[position()+1 and @type='C']/@name"/> </td> </tr> </xsl:for-each> </xsl:template> ... -- ===============================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] 2 columns with special co, George Cristian Bina | Thread | Re: [xsl] 2 columns with special co, Sven Waibel |
Re: [xsl] How is memory allocated i, Rashmi Rubdi | Date | [xsl] Re: xsl-list Digest 3 May 200, Jay Thomsen |
Month |