xsl-list
[Top] [All Lists]

RE: Summarising XML datasets

2004-12-21 02:25:37
Thanks Jarno,

I've tried following the example from Jeni's site and come up with the
following:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:key name="idkey" match="photograph" use="id"/>
<xsl:key name="subjectkey" match="photograph" use="id"/>
<xsl:template match="/">
     <xsl:apply-templates select="results"/>
</xsl:template>

<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.

Any help would be appreciated.

Cheers,

Chris

 

-----Original Message-----
From: Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com 
[mailto:Jarno(_dot_)Elovirta(_at_)nokia(_dot_)com] 
Sent: Tuesday, 21 December 2004 7:16 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Summarising XML datasets

Hi,

I have a problem formatting some XML I am receiving from a 
3rd party 
application that I cannot alter.

The application is querying a database that has a table 
called photo 
and a table called photosubject, there is a one to many 
relationship 
between photo and photosubject.

snip

What I want to do if possible is to render the information 
using xslt 
as:

HouseID  |  House  |  Description | Subjects 
===========================================
1        |  House  |  House 1     | X, Y, Z

XSLT 2.0 solution

  <tbody>
    <xsl:for-each-group select="results/photograph" group-by="id">
      <tr>
        <td>
          <xsl:value-of select="id"/>
        </td>
        <td>
          <xsl:value-of select="name"/>
        </td>
        <td>
          <xsl:value-of select="description"/>
        </td>
        <td>
          <xsl:value-of select="current-group()/subject" 
separator=", "/>
        </td>
      </tr>
    </xsl:for-each-group>
  </tbody>

See <http://www.jenitennison.com/xslt/grouping/> how to 
achieve this using XSLT 1.0 and the Muenchian Method.

Cheers,

Jarno

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



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