xsl-list
[Top] [All Lists]

Re: [xsl] XSLT 1.0 newbie: sum of selected elements

2006-12-11 07:50:36
Kirov Plamen wrote:

  Hi

<xsl:value-of select="sum(..//element[type/@id = 2 or type/@id =
3]/amount/@due)"/>

If I want to sum by more than 5 different Id's or/and for
more amount values(@due, @init...), this method of sorting
values is unusual - a lot of repeated "or" clauses for
every "select".

  You can use something like the following:

    (drkm)[139] ~/xslt/tests$ cat kirov.xsl
    <xsl:transform
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:my="my:kirov.xsl"
        version="1.0">

      <xsl:output method="text"/>

      <my:ids>
        <elem id="2"/>
        <elem id="3"/>
      </my:ids>

      <xsl:variable name="ids" select="
          document('')/*/my:ids/elem/@id"/>

      <xsl:template match="root">
        <xsl:value-of select="
            sum(element[type/@id = $ids]/amount/@due)"/>
      </xsl:template>

    </xsl:transform>

    (drkm)[140] ~/xslt/tests$ cat kirov.xml
    <root>
      <element>
        <type id="1" des="a"/>
        <amount due="10.12" init="0.25"/>
      </element>
      <element>
        <type id="2" des="a"/>
        <amount due="1.82" init="1.00"/>
      </element>
      <element>
        <type id="1" des="a"/>
        <amount due="-12.00" init="0.00"/>
      </element>
      <element>
        <type id="3" des="a"/>
        <amount due="50.00" init="120.35"/>
      </element>
    </root>

    (drkm)[141] ~/xslt/tests$ saxon kirov.xml kirov.xsl
    Warning: at xsl:transform on line 4 of kirov.xsl:
      Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor
    51.82

    (drkm)[142] ~/xslt/tests$ xsltproc kirov.xsl kirov.xml
    51.82

    (drkm)[143] ~/xslt/tests$

  Regards,

--drkm


























        

        
                
___________________________________________________________________________ 
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! 
Profitez des connaissances, des opinions et des expériences des internautes sur 
Yahoo! Questions/Réponses 
http://fr.answers.yahoo.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>
--~--