Subject: RE: [xsl] problem with spreadsheet-like xml structure From: max@xxxxxxxxxx Date: Sat, 11 Jun 2005 23:10:00 +0200 (CEST) |
Okay, this way it works: <xsl:if test="(position() = 2) or (position() = 7) or (position() = 12) or (position() = 17) or (position() = 22) "> <xsl:element name="location"> <xsl:attribute name="arrival"><xsl:value-of select="following-sibling::ss:Cell/ss:Data[1]"/></xsl:attribute> <xsl:element name="name"> <xsl:value-of select="./ss:Data"/> </xsl:element> </xsl:element> </xsl:if> Thanks again! > Thanks for the (very fast) answer! > > Actually there are a lot more cells, so I have to use: > > <xsl:if test="(position() = 2) or (position() = 7) or (position() = 12) > or (position() = 17) or (position() = 22) "> > <xsl:element name="location"> > <xsl:element name="name"> > <xsl:value-of select="./ss:Data"/> > </xsl:element> > <xsl:attribute name="arrival"> > <xsl:value-of select="following-sibling::ss:Cell/ss:Data[1]"/> > </xsl:attribute> > > </xsl:element> > </xsl:if> > > But it doesn't work, the (real) data is: > > <Row> > <Cell><Data ss:Type="String">Abrikosov</Data></Cell> > <Cell><Data ss:Type="String">Moscow, Russia</Data></Cell> > <Cell><Data ss:Type="DateTime">1928-06-25T00:00:00.000</Data></Cell> > <Cell ss:StyleID="s21"><Data ss:Type="String">55.7506N</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">37.6276E</Data></Cell> > <Cell ss:Index="7"><Data ss:Type="String">Argonne, Illinois, > USA</Data></Cell> > <Cell ss:StyleID="s26"><Data ss:Type="Number">1991</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">41.6688N</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">87.9846W</Data></Cell> > <Cell><Data ss:Type="String">National laboratory</Data></Cell> > <Cell><Data ss:Type="String">Stockholm, Sweden </Data></Cell> > <Cell ss:StyleID="s26"><Data ss:Type="Number">2003</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">59.3323N</Data></Cell> > <Cell ss:StyleID="s22"><Data ss:Type="String">18.0651E</Data></Cell> > <Cell><Data ss:Type="String">Nobel Prize inPhysics</Data></Cell> > <Cell ss:StyleID="Default"><Data ss:Type="String">Argonne, Illinois, > USA</Data></Cell> > <Cell><Data ss:Type="Number">1991</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">41.6688N</Data></Cell> > <Cell ss:StyleID="s39"><Data ss:Type="String">87.9846W</Data></Cell> > <Cell><Data ss:Type="String">National Laboratory</Data></Cell> > <Cell ss:Index="23" ss:StyleID="Default"/> > <Cell ss:StyleID="Default"/> > <Cell ss:Index="29" ss:StyleID="Default"/> > </Row> > > >> If you know that the data is in groups of three, you can use >> >> <xsl:template match="row"> >> <xsl:for-each select="cell[position() mod 3 = 1]"> >> <location> >> <name><xsl:value-of select="."/></name> >> <note><xsl:value-of select="following-sibling::cell[1]"/></note> >> <date><xsl:value-of select="following-sibling::cell[2]"/></date> >> </location> >> </ >> </ >> >> Michael Kay >> http://www.saxonica.com/ >> >> >>> -----Original Message----- >>> From: max@xxxxxxxxxx [mailto:max@xxxxxxxxxx] >>> Sent: 11 June 2005 21:40 >>> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx >>> Subject: [xsl] problem with spreadsheet-like xml structure >>> >>> Hi all, >>> >>> I am trying to convert data in an Excel's xml-format to a >>> custom xml-format. >>> The logical structure of the Excel data is >>> >>> <table> >>> <row> >>> >>> <cell> location1 <cell> >>> <cell> note <cell> >>> <cell> date1 <cell> >>> >>> <cell> location2 <cell> >>> <cell> note2 <cell> >>> <cell> date2 <cell> >>> >>> <cell> location3 <cell> >>> <cell> note3 <cell> >>> <cell> date3 <cell> >>> >>> </row> >>> <row> >>> ... >>> </row> >>> </table> >>> >>> What I need is: >>> >>> <row> >>> >>> <location date="date1"> >>> <name>location1</name> >>> <note>note1</note> >>> </location> >>> >>> <location date="date2"> >>> <name>location2</name> >>> <note>note2</note> >>> </location> >>> >>> <location date="date3"> >>> <name>location3</name> >>> <note>note3</note> >>> </location> >>> >>> <row> >>> >>> I can get the location cells ( using position() ) and place >>> the cell data >>> into my location element but >>> then I don't know how to place the following cells inside >>> this location >>> element. >>> >>> <xsl:if test="position() =1 "> >>> <xsl:element name="location"> >>> <xsl:element name="name"> >>> <xsl:value-of select="."/> >>> </xsl:element> >>> >>> <!-- PLACE HERE NEXT TWO CELLS --> >>> >>> </xsl:element> >>> </xsl:if>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] problem with spreadsheet-, max | Thread | RE: [xsl] problem with spreadsheet-, Aron Bock |
RE: [xsl] problem with spreadsheet-, max | Date | Re: [xsl] Can not convert number to, David Carlisle |
Month |