RE: [xsl] problem with spreadsheet-like xml structure

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