Subject: RE: [xsl] Converting from Excel 2003 to a table XSLT 1.0 (saxon 6.5) From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 26 Jul 2005 10:28:39 +0100 |
I suspect the test you want to apply is not ss:Index > position(), but ss:Index > the implicit index of the previous cell, where the implicit index is the ss:Index value if there is one, or the implicit index of the previous cell + 1 if not. Or to put it another way, the column position if there is no ss:Index is equal to the most recent ss:Index value plus the number of intervening Cells with no ss:Index plus one. One way to tackle this would be to first expand the tree by adding the implicit ss:Index values for cells where they are missing. There's a good use for functions here, as defined in XSLT 2.0 - especially memo-functions as implemented in Saxon. You can define the index() of a cell as being its @ss:Index value if it has one, or the index() of the preceding-sibling::Cell[1] +1 if not, or 1 if it's the first cell. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Kaila Kaarle [mailto:Kaarle.Kaila@xxxxxxx] > Sent: 26 July 2005 09:43 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] Converting from Excel 2003 to a table XSLT 1.0 > (saxon 6.5) > > hello, > > I am converting an Excel 2003 Table element to an html table element. > > Conversion goes OK if all elements have content or even if > one set of elements are empty but if more than one set of > elements are empty then I get it wrong. Can anybody give me > good advice on this: > > This is how teh Table Row looks like in Excel. First Cell > element begins at column 3 and the 4th Cell element begins at > column 7. > ---------------------------- > <Row> > <Cell ss:Index="3" ss:StyleID="s25"> > <Data ss:Type="String">L1</Data> > </Cell> > <Cell> > <Data ss:Type="String">Eland</Data> > </Cell> > <Cell> > <Data ss:Type="String">se</Data> > </Cell> > <Cell ss:Index="7"> > <Data ss:Type="String">Ahvenanmaa</Data> > </Cell> > </Row> > ------------------------------ > > This is what I have made sofar: It adds correct amount of > empty cells for 1st Cell but I have not figured out how to > calculate on what <td> element I am the next time. > > > <xsl:template match="ss:Cell"> > <xsl:if test="@ss:Index > position()"> > <xsl:call-template name="produce-empty-cells"> > <xsl:with-param name="count" select="@ss:Index - position()"/> > </xsl:call-template> > </xsl:if> > <td> > <xsl:value-of select="ss:Data"/> > </td> > </xsl:template> > > <xsl:template name="produce-empty-cells"> > <xsl:param name="count"/> > <xsl:if test="$count != 0"> > <td></td> > <xsl:call-template name="produce-empty-cells"> > <xsl:with-param name="count" select="$count - 1"/> > </xsl:call-template> > </xsl:if> > </xsl:template> > > ----------------- > > regards > Kaarle Kaila
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Converting from Excel 2003 to, Kaila Kaarle | Thread | RE: [xsl] Converting from Excel 200, Kaila Kaarle |
Re: [xsl] Save the sorted xml in a , omprakash . v | Date | RE: [xsl] Save the sorted xml in a , Michael Kay |
Month |