xsl-list
[Top] [All Lists]

RE: No to display the values which are already existing

2003-06-25 14:00:10
Thanks , it is working great.


From: Américo Albuquerque <melinor(_at_)sapo(_dot_)pt>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: RE: [xsl] No to display the values which are already existing
Date: Wed, 25 Jun 2003 19:24:13 +0100

Hi

> -----Original Message-----
> From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> [mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
> Tengshe, Ashish
> Sent: Wednesday, June 25, 2003 7:14 PM
> To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> Subject: RE: [xsl] No to display the values which are already existing
>
>
> This is not really accurate. This works only for th given
> sequence, try placing "Dan" and "Steve" Authors in different
> sequence and this breaks. Basically this works only if the
> Element on which the key is generated are in consecutive
> order. I would like the answer too! Thanks, Ashish

Yes, that is true, sorry

Just sort the <Title> elements by the Author and it will work

 <xsl:template match="Store">
   <table>
    <tr>
     <td>Author</td>
     <td>Title</td>
    </tr>
     <xsl:apply-templates>
      <xsl:sort select="Author"/>
     </xsl:apply-templates>
   </table>
  </xsl:template>

>
> -----Original Message-----
> From: Américo Albuquerque [mailto:melinor(_at_)sapo(_dot_)pt]
> Sent: Wednesday, June 25, 2003 12:48 PM
> To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> Subject: RE: [xsl] No to display the values which are already existing
>
>
> Hi
>
> > -----Original Message-----
> > From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> > [mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of
> > Dhananjay Pitani
> > Sent: Wednesday, June 25, 2003 6:23 PM
> > To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
> > Subject: [xsl] No to display the values which are already existing
> >
> >
> > This is my xml
> >
> > <Store>
> >   <Title>
> >         <Author>Steve</Author>
> >         <Name>XSL</Name>
> >   </Title>
> >   <Title>
> >         <Author>Steve</Author>
> >         <Name>XML</Name>
> >   </Title>
> >   <Title>
> >         <Author>Dan</Author>
> >         <Name>HTML</Name>
> >   </Title>
> >   <Title>
> >         <Author>Dan</Author>
> >         <Name>XSL</Name>
> >   </Title>
> > </Book>
> >
> > I want to display the above xml as a html table with two
> > columns Author and
> > Titlle. My task is to display the Author's name only once.
> > The output should
> > be like this
> >
> > Author      Title
> >
> > Steve        XSL
> >                 XML
> > Dan           HTML
> >                 XSL
> >
>
> You could use a variation of the muenchian method
>
>  <xsl:key match="Title" name="list" use="Author"/>
> <xsl:template match="Store">
>   <table>
>    <tr>
>     <td>Author</td>
>     <td>Title</td>
>    </tr>
>    <!-- instead of applying just to the first element of each
> group apply to all -->
>    <xsl:apply-templates/>
>   </table>
>  </xsl:template>
>  <xsl:template match="Title">
>   <tr>
>    <td>
>     <!-- display the Author if this is the first element of
> the group -->
>     <xsl:if test="generate-id()=generate-id(key('list',Author))">
>      <xsl:apply-templates select="Author"/>
>     </xsl:if>
>    </td>
>    <td>
>     <xsl:apply-templates select="Name"/>
>    </td>
>   </tr>
>  </xsl:template>
>
>
> Hope this helps you.
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>
>



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


_________________________________________________________________
Food fit for Kings! Now available online. http://server1.msn.co.in/features/general/itc/index.asp


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list