RE: [xsl] RE: [Bu posta banka disindan gelmekte olup gerektiginde teyit alinmalidir.] - [xsl] find the sum over distinct nodes - Sender blacklisted

Subject: RE: [xsl] RE: [Bu posta banka disindan gelmekte olup gerektiginde teyit alinmalidir.] - [xsl] find the sum over distinct nodes - Sender blacklisted
From: Osman Çınar Eren <Cinar.Eren@xxxxxxxxxxxxx>
Date: Thu, 18 Nov 2004 17:36:26 +0200
it does not work:(
for the first nodeset, it writes for one of the B nodes.

nothing else:(

any ideas?

-----Original Message-----
From: Jarno.Elovirta@xxxxxxxxx [mailto:Jarno.Elovirta@xxxxxxxxx]
Sent: Thursday, November 18, 2004 1:41 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] RE: [Bu posta banka disindan gelmekte olup
gerektiginde teyit alinmalidir.] - [xsl] find the sum over distinct
nodes - Sender blacklisted


Hi,

> 	     <xsl:for-each select="$ZZZ[generate-id(.)]">

This is in effect the same as

  <xsl:for-each select="$ZZZ">

as an id can be generated for each node and it will always be a non-zero
length string. Just use

<xsl:template name="temp1">
  <xsl:param name="ZZZ" />
  <xsl:for-each select="$ZZZ/B[generate-id(value) = generate-id(key('dkey',
value/v1))]">
    <xsl:variable name="miktar" select="sum(key('dkey', value/v1)/v2)"/>
    <fo:table-row>
      <fo:table-cell>
        <fo:block text-align="left" font-size="8pt" >
          <xsl:value-of select='format-number($miktar, "###,###.00")'/>
        </fo:block>
      </fo:table-cell>
    </fo:table-row>
  </xsl:for-each>
</xsl:template>

Cheers,

Jarno

> 		...
> 		<xsl:if test=...>
> 			  <xsl:for-each
> select="$ZZZ/B/value[generate-id(.) = generate-id(key('dkey', v1))]">
> 			    <xsl:variable name="miktar"
> select="sum(key('dkey', v1)/v2)"/>
> 			    <fo:table-row>
> 			      <fo:table-cell>
> 			        <fo:block text-align="left"
> font-size="8pt" >
> 		          <xsl:value-of
> select='format-number($miktar, "###,###.00")'/>
> 		        </fo:block>
> 		      </fo:table-cell>
> 		    </fo:table-row>
> 		  </xsl:for-each>
>
> 		</xsl:if>
>
> 		  </xsl:for-each>
> 		  </xsl:template>
>
> is this a wrong idea to use ZZZ multiple times?
>
> -----Original Message-----
> From: Jarno.Elovirta@xxxxxxxxx [mailto:Jarno.Elovirta@xxxxxxxxx]
> Sent: Thursday, November 18, 2004 11:55 AM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] RE: [Bu posta banka disindan gelmekte olup
> gerektiginde teyit alinmalidir.] - [xsl] find the sum over distinct
> nodes - Sender blacklisted
>
>
> Hi,
>
> > <xsl:key name="dkey" match="value" use="v1"/>
> > <xsl:for-each select="$ZZZ[generate-id(.)]/B[generate-id(.) =
> > generate-id(key('dkey',v1)[1])]">
>
> [generate-id(.)] will always return true, so we can rewrite
> the above into
>
> $ZZZ/B[generate-id(.) = generate-id(key('dkey',v1)[1])]
>
> > but this returns nothing, that is this does not return a nodeset...
> > i have a problem with the grouping.
> > any ideas?
>
> How about
>
>   <xsl:for-each select="$ZZZ/B[generate-id(value) =
> generate-id(key('dkey', value/v1))]">
>     <xsl:variable name="miktar" select="sum(key('dkey',
> value/v1)/v2)"/>
>     <fo:table-row>
>       <fo:table-cell>
>         <fo:block text-align="left" font-size="8pt" >
>           <xsl:value-of select='format-number($miktar,
> "###,###.00")'/>
>         </fo:block>
>       </fo:table-cell>
>     </fo:table-row>
>   </xsl:for-each>
>
> Cheers,
>
> Jarno
>
> > regards..
> >
> > -----Original Message-----
> > From: Osman G}nar Eren [mailto:Cinar.Eren@xxxxxxxxxxxxx]
> > Sent: Thursday, November 18, 2004 10:43 AM
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [Bu posta banka d}~}ndan gelmekte olup gerektipinde teyit
> > al}nmal}d}r.] - [xsl] find the sum over distinct nodes - Sender
> > blacklisted
> >
> >
> >
> > Hi,
> >
> > I have such an XML nodeset:
> >
> > <A>
> >         <B>
> >             <key>aa</key>
> >             <value>
> >                 <v1>aa</v1>
> >                 <v2>110</v2>
> >             </value>
> >         </B>
> >         <B>
> >             <key>bb</key>
> >             <value>
> >                 <v1>bb</v1>
> >                 <v2>10</v2>
> >             </value>
> >         </B>
> >         <B>
> >             <key>cc</key>
> >             <value>
> >                 <v1>cc</v1>
> >                 <v2>60</v2>
> >             </value>
> >         </B>
> > </A>
> >
> > <A>
> >        <B>
> >             <key>bb</key>
> >             <value>
> >                 <v1>bb</v1>
> >                 <v2>40</v2>
> >             </value>
> >         </B>
> >         <B>
> >             <key>cc</key>
> >             <value>
> >                 <v1>cc</v1>
> >                 <v2>200</v2>
> >             </value>
> >         </B>
> > </A>
> >
> > <A>
> >         <B>
> >             <key>dd</key>
> >             <value>
> >                 <v1>dd</v1>
> >                 <v2>60</v2>
> >             </value>
> >         </B>
> > </A>
> >
> > what i try to do is to have the sum values over 'v2' values
> > for distinct B nodes.(distinct means for different key values.)
> > i would like to have such an XSL part:
> >
> > <xsl:for-each select="$ZZZ[generate-id(.)]/???">
> >   <xsl:variable name="miktar" select="sum(v2)"/>
> >   <fo:table-row>
> >    <fo:table-cell>
> >       <fo:block text-align="left" font-size="8pt" >
> >            <xsl:value-of select='format-number($miktar,
> > "###,###.00")'/>
> >       </fo:block>
> >    </fo:table-cell>
> >   </fo:table-row>
> >
> > where $ZZZ is the nodeset which contrains the elements given above.
> >
> > thanks in advance.
> > best regards..

Current Thread