><xsl:choose> > <xsl:when test="string(number(.))!='NaN'"> > <Data Type="Number"> > <xsl:value-of select="."/> > </Data> > </xsl:when> > <xsl:otherwise> > <Data Type="String"> > <xsl:value-of select="."/> > </Data> > </xsl:otherwise> ></xsl:choose> >>
<xsl:stylesheet version="1.0" xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" > <xsl:template match="/"> <Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"> <xsl:apply-templates/> </Workbook> </xsl:template> <xsl:template match="/*"> <Worksheet> <xsl:attribute name="ss:Name"> <xsl:value-of select="local-name(/*/*)"/> </xsl:attribute> <Table x:FullColumns="1" x:FullRows="1"> <Row> <xsl:for-each select="*[position() = 1]/*"> <Cell><Data ss:Type="String"> <xsl:value-of select="local-name()"/> </Data></Cell> </xsl:for-each> </Row> <xsl:apply-templates/> </Table> </Worksheet> </xsl:template> <xsl:template match="/*/*"> <Row> <xsl:apply-templates/> </Row> </xsl:template> <xsl:template match="/*/*/*"> <Cell> <xsl:when test="string(number(.))!='NaN'"> <Data Type="Number"> <xsl:value-of select="."/> </Data> </xsl:when> <xsl:otherwise> <Data Type="String"> <xsl:value-of select="."/> </Data> </xsl:otherwise> </Cell> </xsl:template> </xsl:stylesheet>I also tried to insert the choose tag after the cell tag and the closing tag before the Cell closing tag but this doesn't work either.