|
Subject: RE: [xsl] Summarising XML datasets From: <Jarno.Elovirta@xxxxxxxxx> Date: Tue, 21 Dec 2004 11:42:08 +0200 |
Hi,
> I've tried following the example from Jeni's site and come up with the
> following:
snip
> <xsl:template match="results">
> <xsl:for-each select="photograph[count(. | key('idkey',
> id)[1])=1]">
> <h3><xsl:value-of select="id" /></h3>
> <h4><xsl:value-of select="name"/></h4>
> <h5><xsl:value-of select="description"/></h5>
> <xsl:for-each select="key('subjectkey', id)">
> <TABLE border="0" width="75%">
> <tr>
> <th width="10%" align="right">Subject</th>
> <td width="90%" align="left"><xsl:value-of
> select="subject" /></td>
> </tr>
> </TABLE>
> <hr width="75%" align="left"/>
> </xsl:for-each>
>
> </xsl:for-each>
> </xsl:template>
> </xsl:stylesheet>
>
> This works unless I have a duplicate subject node, which actually can
> happen.
>
> I'm a little bit stuck with how to only display unique subjects.
Then you need to generate a second grouping key, which is a concatenation of
ID and subject.
<xsl:key name="subjectkey" match="photograph" use="concat(id, ' ',
subject)"/>
and list subjects with
<xsl:for-each select="key('idkey', id)[generate-id(.) =
generate-id(key('subjectkey', concat(id, ' ', subject)))]">
<xsl:if test="not(position() = 1)">, </xsl:if>
<xsl:value-of select="subject" />
</xsl:for-each>
Cheers,
Jarno
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Summarising XML datasets, Chris Hicks | Thread | RE: [xsl] Summarising XML datasets, Chris Hicks |
| RE: [xsl] Summarising XML datasets, Chris Hicks | Date | Re: [xsl] Comparing nodes in axis, David Carlisle |
| Month |