xsl-list
[Top] [All Lists]

RE: problem with spreadsheet-like xml structure

2005-06-11 14:10:00
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(_at_)gaerber(_dot_)de [mailto:max(_at_)gaerber(_dot_)de]
Sent: 11 June 2005 21:40
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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>



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--