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 |