RE: [xsl] XPATH Conditional Values and Sums

Subject: RE: [xsl] XPATH Conditional Values and Sums
From: "Puneet Railan" <PRailan@xxxxxxx>
Date: Mon, 9 Aug 2004 18:24:52 -0400
Sorry about that.  Here's some sample input:

<Office name="Office1" sortkey="0">
		<SSL name="SSL1">
			<PBS name="PBS1" title="">
				<Data name="attrib1">2095</Data>
				<Data name="attrib2">0</Data>
				<Data name="attrib3">2097</Data>
			</PBS>
			<PBS name="PBS2" title="">
				<Data name="attrib1">5234</Data>
				<Data name="attrib2">1230</Data>
				<Data name="attrib3">1097</Data>
			</PBS>
		</SSL>
		<SSL name="SSL2">
			<PBS name="PBS3" title="">
				<Data name="attrib1">4095</Data>
				<Data name="attrib2">2330</Data>
				<Data name="attrib3">9097</Data>
			</PBS>
			<PBS name="PBS4" title="">
				<Data name="attrib1">2095</Data>
				<Data name="attrib2">0</Data>
				<Data name="attrib3">2097</Data>
			</PBS>
			<PBS name="PBS5" title="">
				<Data name="attrib1">2095</Data>
				<Data name="attrib2">0</Data>
				<Data name="attrib3">2097</Data>
			</PBS>
		</SSL>
</Office>

The parameter being passed in is specified via the other XSLT generated
by MapForce (which allows me to create some mappings and generate XSLT
automatically).  I'm basically trying to use this as a sort of
plug-in/mapforce library file to do transformations.  Basically, what I
want done with that sample code up there (and using some of the code
below) is to sum (roll-up) everything in the Data elements by the SSL
name attribute.  I'm sorry if that wasn't clear in the first place.
Thanks in advance.

-P

-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx]
Sent: Monday, August 09, 2004 6:00 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] XPATH Conditional Values and Sums


  <xsl:for-each select=".">

That is a no-op: you are already on the current node (.) and this just
iterates over a list of exactly one node, the current one.

You then pass in . again as a parameter although the information about
the current node is available to the called template directly as .
(and you don't use that parameter anywhere)

  <xsl:variable name="SSL" select="//SSL"/>
  <xsl:for-each select="$SSL">

That is equivalent to


  <xsl:for-each select="//SSL">

and since it starts with / it ignores the current node and searches the
entire document each time for all the SSL nodes.

This probably isn't what you want to do, but since you gave no
indication of what your input looks like, or which nodes you do want to
sum, it's hard to suggest what to change.

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread