xsl-list
[Top] [All Lists]

How to calculate rowspan?

2004-08-26 01:26:45
Hi!

How can i calculate identical nodes with attribute Type="Dimesion"? I wish
to set rowspan and ignore all of unnecessery following nodes with the same
content. 

Please, help me.

I wish to get this table in HTML:

-----------------
    |   |   |   |
    -   ---------
    |   |   |   |
    -------------
    |   |   |   |
-----------------
    |   |   |   |
    -------------
    |   |   |   |
-----------------
    |   |   |   |
-----------------


My XML:

<QPivotTable>
<ROW>
        <COL0 Type="Dimesion">A</COL0>
        <COL1 Type="Dimesion">E</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
<ROW>
        <COL0 Type="Dimesion">A</COL0>
        <COL1 Type="Dimesion">E</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
<ROW>
        <COL0 Type="Dimesion">A</COL0>
        <COL1 Type="Dimesion">Gesamt</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
<ROW>
        <COL0 Type="Dimesion">B</COL0>
        <COL1 Type="Dimesion">8040 Haus- u. Straßensamml.</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
<ROW>
        <COL0 Type="Dimesion">B</COL0>
        <COL1 Type="Dimesion">8055 Sen.Gymn.</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
<ROW>
        <COL0 Type="Dimesion">C</COL0>
        <COL1 Type="Dimesion">test</COL1>
        <COL2>1</COL2>
        <COL3>2</COL3>
</ROW>
</QPivotTable>

My XSL:

<!-- count Dimesion -->
<xsl:variable name="dim_count" select="count(
//ROW[not(descendant::node()[1][(_at_)Type='Label'])]
[1]/node()[(_at_)Type='Dimesion'] )" />

<!-- select data rows -->
<xsl:template match="//ROW[not(descendant::node()[1][(_at_)Type='Label'])]" >
<tr>
        <xsl:for-each select="*">
        <xsl:variable name="pos" select="position()" />
                                                
        <xsl:choose>
                <xsl:when test=" @Type='Dimesion' ">


                        <!-- HOW TO SET ROWSPAN AND IGNORE FOLLOWING
IDENTICAL NODES? -->

                        <xsl:value-of select="$pos" />

                                <xsl:if test="not(.=following::*/*[$pos])" >
                                        <td>

                                                <xsl:value-of select="." />
                                        </td>
                                </xsl:if>
                </xsl:when>
                <xsl:otherwise>
                <!-- igore the firs x values -->
                <xsl:if test="position() &gt; $dim_count" >
                        <td>
                        <xsl:value-of select="." />
                        </td>
                </xsl:if>
        </xsl:otherwise>
        </xsl:choose>

        </xsl:for-each>
</tr>
</xsl:template>

Best Regards
A. Metz



<Prev in Thread] Current Thread [Next in Thread>