[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Summarising XML datasets
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|