[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] Continuously add to a parameter at each call
Subject: RE: [xsl] Continuously add to a parameter at each call From: "Emil Soosaithasan" <emils@xxxxxxxxxxxxxxxx> Date: Wed, 9 Nov 2005 16:24:18 -0500 |
Jon Sorry for not including the cost per each task but your guess is right on the money. I like the idea of grouping rather than going through many iterative loops but I am new to the XSL world and have no experience in grouping. I will try to look at the faq on grouping but if you have some time, please give me a small sample code on how to group the tasks. Thanks a lot in advance, its great to know that some people do care about others' problem -----Original Message----- From: Jon Gorman [mailto:jonathan.gorman@xxxxxxxxx] Sent: Wednesday, November 09, 2005 4:19 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Continuously add to a parameter at each call > In MS Project, all tasks whether low-level or top-level are grouped as > tasks, for example: > > <Tasks> > <Task><Name>Hardware</Name><OutlineLevel>1</OutlineLevel><WBS>1</WBS></T > ask> > <Task><Name>Bringup</Name><WBS>1.1</WBS></Task> > <Task><Name>Testing</Name><WBS>1.2</WBS></Task> > <Task><Name>Software</Name><OutlineLevel>1</OutlineLevel><WBS>2</WBS></T > ask> > <Task><Name>Development</Name><WBS>2.1</WBS></Task> > <Task><Name>Test</Name><WBS>2.2</WBS></Task> > </Task> > > The way I group these is by <WBS>, if you notice carefully - "Hardware" > has a <WBS> of "1" which means it's a Top-Level task. "Bringup" is a > low-level task that falls under "Hardware" because it has a <WBS> of > "1.1". "Testing" is also another low level task under "Hardware". > Similar arguments can be made for the Top-Level task "Software" and its > tasks. Looks like a pretty standard varient of a grouping problem, no need to go through a bunch of loops. Group the elements or gather via xpath expressions. I could give you more advice, but I can't for the life of me find a "Cost" element in your example and don't have much time to look closely at this right now. I'll take a wild stab and guess it's something like this (although guessing in cases involving Microsoft's xml schemas is always risky). <Tasks> <Task><Name>Hardware</Name><OutlineLevel>1</OutlineLevel><WBS>1</WBS></T ask> <Task><Name>Bringup</Name><WBS>1.1</WBS><Cost>12</Cost></Task> <Task><Name>Testing</Name><WBS>1.2</WBS><Cost>22</Cost></Task> <Task><Name>Software</Name><OutlineLevel>1</OutlineLevel><WBS>2</WBS></T ask> <Task><Name>Development</Name><WBS>2.1</WBS><Cost>1</Cost></Task> <Task><Name>Test</Name><WBS>2.2</WBS><Cost>3</Cost></Task> </Task> So if it is there is a couple of ways to select the proper nodesets. 1) For each task that has an outline element , sum the following siblings that position is less then the next item to have an outline element. Then to produce a grand total sum all Tasks that have a Cost. 2) group all that start with the same digit ie (all 1.*, 2.*) by grouping methods described in the faq. Run sum on the Cost nodes in that nodeset. In a broader set of advice either a) use recursion (think in lisp terms with car and cdr) since you cannot change the value of a variable or b) just group and use the sum as appropriate. I stil haven't seen anything that would force someone to need to use iterative loops. If you do just modify it to use a recursive template. Jon
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Continuously add to a par, Jon Gorman | Thread | Re: [xsl] Continuously add to a par, Jon Gorman |
Re: [xsl] parsing a complex xml tre, drkm | Date | Re: [xsl] XML to RTf conversion, Geert Josten |
Month |