Subject: Re: [xsl] 2 columns with special conditions From: Sven Waibel <sven.waibel@xxxxxxxx> Date: Fri, 04 May 2007 10:37:39 +0200 |
Hi Brad, that works very well and it's very easy to understand! I just had to change <xsl:when test="following-sibling::mc[1]/@type eq 'C'" > to <xsl:when test="following-sibling::mc[1]/@type = 'C'" > @George Cristian Bina Yours is great too, but the other one fits better, thanks. Thanks Sven Bjorndahl, Brad schrieb: > 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> > ... > > -- > =============================================================== > > > -- =============================================================== imbus AG, Kleinseebacher Str. 9, 91096 Mvhrendorf, DEUTSCHLAND Tel. +49 9131 7518-0, Fax +49 9131 7518-50 info@xxxxxxxx http://www.imbus.de imbus AG, Unter der Linde 16, 80939 M|nchen, DEUTSCHLAND Tel. +49 89 3219909-0, Fax +49 89 3219909-50 info@xxxxxxxx http://www.imbus.de Vorsitzender des Aufsichtsrates: Hendrik Rdssler Vorstand: Tilo Linz, Bernd Nossem, Thomas Ro_ner, Jvrg Schulten Sitz der Gesellschaft: Mvhrendorf, M|nchen Registergericht: F|rth/Bay, HRB 8365 --------------------------------------------------------------- imbus Rhein-Main GmbH, Zanggasse 6, 65719 Hofheim, DEUTSCHLAND Tel. +49 6192 92192-0, Fax +49 6192 92192-50 info@xxxxxxxx http://www.imbus.de Geschdftsf|hrer: Frank Schmei_ner, Jvrg Schulten Sitz der Gesellschaft: Hofheim Registergericht: Frankfurt am Main, HRB 52155 ===============================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] 2 columns with special co, Bjorndahl, Brad | Thread | Re: [xsl] 2 columns with special co, George Cristian Bina |
Re: [xsl] How is memory allocated i, Rashmi Rubdi | Date | Re: [xsl] 2 columns with special co, George Cristian Bina |
Month |