xsl-list
[Top] [All Lists]

Grouping elements in table using xsl:fo

2004-06-15 04:15:37
Hi
I have the following xml:

<x>
        <y>
                <z>
                        <A>ff</A>
                        <B>gg1</B>
                        <C>hh</C>
                        <D>ii</D>
                        <E>jj</E>
                </z>
        </y>
        <y>
                <z>
                        <A>kk</A>
                        <B>gg2</B>
                        <C>ll</C>
                        <D>mm</D>
                        <E>nn</E>
                </z>
        </y>
        <y>
                <z>
                        <A>tt</A>
                        <B>gg3</B>
                        <C>uu</C>
                        <D>vv</D>
                        <E>ww</E>
                </z>
        </y>
        <y>
                <z>
                        <A>pp</A>
                        <B>gg1</B>
                        <C>qq</C>
                        <D>rr</D>
                        <E>ss</E>
                </z>
        </y>
        <y>
                <z>
                        <A>ff</A>
                        <B>gg2</B>
                        <C>hh</C>
                        <D>ii</D>
                        <E>jj</E>
                </z>
        </y>
</x>

I would like to create a row for each <z> in a table grouped by the value of
<B>.  For each different value of <B> there would be a heading and on the
rows below each heading each <z> which has the same <B> value.

eg.

                                A   C   D   E
                   gg1
                                ff  hh  ii  jj
                                pp  qq  rr  ss
                         gg2
                                kk  ll  mm  nn
                                ff  hh  ii  jj
                         gg3
                        tt  uu  vv  ww

So far I have only been able to list all three unique values of <B> in one
row at the start of the table.  To do this I have used:

<fo:table-row>
        <fo:table-cell xsl:use-attribute-sets="x.x.x.x">
                <fo:block xsl:use-attribute-sets="x.x.x.x">
<xsl:apply-templates select="y/z/B[not(. = preceding::B)]"/>
        <xsl:sort select="B"/>
                </fo:block>
        </fo:table-cell>
</fo:table-row>


I have not been able to place each unique value of <B> in a new row and
group each <Z> by <B>.  Also as I am using xsl:fo I have not been using the
Meuchian Method as I am not sure that it is compatible.

Any help would be gratefully received.
Thanks
James Steven








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