Subject: [xsl] Re: to get form one xml file and other XSLT file (bellow the code) one talee with 2 columns. SOS From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Wed, 5 Mar 2003 23:15:42 +0100 |
Hi Dionisio, This transformation produces the wanted result: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" /> <xsl:strip-space elements="*"/> <xsl:template match="/"> <table> <xsl:for-each select="/*/votacion[position() mod 2 = 1]"> <tr> <xsl:apply-templates select=". | following-sibling::votacion[1]"/> </tr> </xsl:for-each> </table> </xsl:template> <xsl:template match="votacion"> <td> <xsl:for-each select="registro/resultado"> <xsl:value-of select="concat('res: ', .)"/> <xsl:if test="position() != last()"> - </xsl:if> </xsl:for-each> </td> </xsl:template> </xsl:stylesheet> When applied to this source.xml: <registros> <votacion> <registro> <resultado>102</resultado> </registro> <registro> <resultado>22</resultado> </registro> </votacion> <votacion> <registro> <resultado>56</resultado> </registro> <registro> <resultado>31</resultado> </registro> <registro> <resultado>36</resultado> </registro> </votacion> <votacion> <registro> <resultado>02</resultado> </registro> <registro> <resultado>62</resultado> </registro> </votacion> <votacion> <registro> <resultado>66</resultado> </registro> <registro> <resultado>33</resultado> </registro> <registro> <resultado>36</resultado> </registro> </votacion> <votacion> <registro> <resultado>122</resultado> </registro> <registro> <resultado>24</resultado> </registro> </votacion> </registros> the result is: <table> <tr> <td>res: 102 - res: 22</td> <td>res: 56 - res: 31 - res: 36</td> </tr> <tr> <td>res: 02 - res: 62</td> <td>res: 66 - res: 33 - res: 36</td> </tr> <tr> <td>res: 122 - res: 24</td> </tr> </table> In case you need a table with nCols columns, you can modify the above transformation like this: <xsl:param name="nCols" select="3"/> <xsl:template match="/"> <table> <xsl:for-each select="/*/votacion[position() mod $nCols = 1]"> <tr> <xsl:apply-templates select=". | following-sibling::votacion[position() < $nCols]"/> </tr> </xsl:for-each> </table> </xsl:template> Hope this helped. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL "Dionisio Ruiz de Zarate" <dionisio@xxxxxxxxxxxxx> wrote in message news:002b01c2e34f$2a6f1640$0201a8c0@xxxxxxx > Witn the bellow XML and XSLT fiel i want to get this: > <table> > <tr><td>res: 102 - res: 22</td><td>res: 56 - res: 31 - res: 36</td></tr> > <!-- more elements here --> > </table> > > i want to get one table with 2 columns and x rows. but i dont get it > o dont presents the two columns > can you help me please? i am two weeks with this problem and i dont solve > it. > plase can you help me? > thanks > > XML file: > > <?xml version="1.0" encoding="ISO-8859-1"?> > <registros> > <votacion> > <registro> > <resultado>102</resultado> > </registro> > <registro> > <resultado>22</resultado> > </registro> > </votacion> > <votacion> > <registro> > <resultado>56</resultado> > </registro> > <registro> > <resultado>31</resultado> > </registro> > <registro> > <resultado>36</resultado> > </registro> > </votacion> > </registros> > > > XSLT template: > <?xml version="1.0" encoding="ISO-8859-1"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method="xhtml" version="1.0" encoding="ISO-8859-1" > indent="yes"/> > <xsl:template match="/"> > <table> > <xsl:for-each select="/registros/votacion"> > <xsl:if test="position() mod 2 = 1 or position()=1"> > <xsl:call-template name="Make2ColumnRow"> > <xsl:with-param name="FirstItemPositionNo"> > <xsl:value-of select="position()"/> > </xsl:with-param> > </xsl:call-template> > </xsl:if> > </xsl:for-each> > </table> > </xsl:template> > <xsl:template name="Make2ColumnRow"> > <xsl:param name="FirstItemPositionNo"/> > <tr> > <td> > <xsl:for-each select="/registros/votacion/registro"> > res: <xsl:variable name="myVarGrafica" > select="self::node()[position()=$FirstItemPositionNo]/resultado" />res: > </xsl:for-each> > </td> > <td> > <xsl:for-each select="/registros/votacion/registro"> > res: <xsl:variable name="myVarGrafica" > select="self::node()[position()=$FirstItemPositionNo+1]/resultado" /> > </xsl:for-each> > </td> > </tr> > </xsl:template> > </xsl:stylesheet> > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] to get form one xml file and , Dionisio Ruiz de Zar | Thread | RE: [xsl] to get form one xml file , cknell |
Re: [xsl] Re: Method for delimiting, Ted Stresen-Reuter | Date | RE: [xsl] to get form one xml file , cknell |
Month |