|
Subject: Re: [xsl] problems with position() and following-sibling From: Kenneth Stephen <marvin.the.cynical.robot@xxxxxxxxx> Date: Fri, 12 Aug 2005 10:25:58 -0500 |
George,
1. Everywhere you've coded following-sibling::Cell[7] - you need
to replace that with ../Cell[7] .
2. The Excel format has a default namespace of
urn:schemas-microsoft-com:office:spreadsheet set on the root element
(Worksheet). You need to be using that in your XPath expressions too.
In the following example, I've mapped that namespace to "ss" :
<xsl:template match="ss:Row">
<row>
<xsl:apply-templates />
</row>
</xsl:template>
<xsl:template match="ss:Cell[position() > 1 and position() < 7]">
<entry>
<xsl:value-of select="ss:Data" />
<xsl:if test="position()=3 and ../ss:Cell[7]">
<xsl:message>+++ making footnote +++</xsl:message>
<footnote>
<para>
<xsl:value-of select="../ss:Cell[7]/ss:Data" />
</para>
</footnote>
</xsl:if>
</entry>
</xsl:template>
Regards,
Kenneth
On 8/12/05, Georges Schmitz <georges.schmitz@xxxxxxxxx> wrote:
> My use case:
>
> I have an Excel Sheet in xml format, that is basically build out of 6
> columns. Now and then I have a value in column 7, that should be made a
> footnote in column 2 of the output. Column 1 is to be eliminated in the
> output (I just use it for grouping).
>
> Example Data (6 columns, sometimes 7):
>
> <Row>
> <Cell><Data ss:Type="String">LAS</Data></Cell>
> <Cell><Data ss:Type="String">Masterreport</Data></Cell>
> <Cell><Data ss:Type="String">alle 4 Lizenzarten</Data></Cell>
> <Cell><Data ss:Type="String">Lizenzdruck</Data></Cell>
> <Cell><Data ss:Type="String">Jasper</Data></Cell>
> <Cell><Data ss:Type="String">pilot_licence_CH.xml</Data></Cell>
> <Cell><Data ss:Type="String">Alle Lizenzvorlagen sind in zip-Dateien
> zusammengefasst.</Data></Cell>
> </Row>
>
> Output should be (5 columns):
>
> <row>
> <entry>Masterreport</entry>
> <entry>alle 4 Lizenzarten<footnote>
> <para>Alle Lizenzvorlagen sind in zip-Dateien
> zusammengefasst.</para>
> </footnote>
> </entry>
> <entry>Lizenzdruck</entry>
> <entry>Jasper</entry>
> <entry>pilot_licence_CH.xml</entry>
> </row>
>
> My approach is to use simple template matching for rows and cells:
>
> <xsl:template match="Row">
> <row>
> <xsl:apply-templates/>
> </row>
> </xsl:template>
>
> <xsl:template match="Cell[position() > 1 and position() < 7]">
> <entry>
> <xsl:value-of select="Data"/>
> <xsl:if test="position()=3 and following-sibling::Cell[7]">
> <xsl:message>+++ making footnote +++</xsl:message>
> <footnote><para><xsl:value-of
> select="following-sibling::Cell[7]/Data"/></para></footnote>
> </xsl:if>
> </entry>
> </xsl:template>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] problems with position() and , Georges Schmitz | Thread | Re: [xsl] problems with position() , Georges Schmitz |
| [xsl] Breaking from the loop (for-e, Oleg Konovalov | Date | Re: [xsl] Breaking from the loop (f, Kenneth Stephen |
| Month |