Im not very experienced with XSL, this is my first run in with it. I found an XSL file that converts a dataset to an excel readable format.
The problem I have is when the dataset has a null value for a column, it does not add an empty element for the column. Is there any way I can detect this?
Excel.xsl:
Expand|Select|Wrap|Line Numbers
- <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">
- <xsl:for-each select="*[position() = 1]/*">
- <Column ss:Width="120"/>
- </xsl:for-each>
- <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>
- <Data ss:Type="String">
- <xsl:value-of select="."/>
- </Data>
- </Cell>
- </xsl:template>
- </xsl:stylesheet>