Re: [xsl] Re: count(preceding-sibling ) not working

Subject: Re: [xsl] Re: count(preceding-sibling ) not working
From: Steve <subsume@xxxxxxxxx>
Date: Mon, 3 Dec 2007 09:01:28 -0500
You mentioned you needed to do some filtering--is this because you
only want some previous Accrual nodes counted?

In this case, this won't work because those nodes filtered-out nodes
will start appearing.

-S

On Dec 3, 2007 8:19 AM, Adam Lipscombe <adam.lipscombe@xxxxxxxxxx> wrote:
>
> Thanks...
>
>
>
>  > presumably you get 0 bcause there are no preceding siblings.
>  > that is children of the same parent.
>
> Yes of course, sorry for being so thick. I see that and understand the problem. But I am having
> trouble finding a solution:
>
> What I want to do is to count the total number of Accrual nodes that precede the current Accrual
> node. Both the siblings of the current Accrual node and any Accrual children of all preceding
> Accruals nodes.
>
>
> I have tried this:
>
> <xsl:for-each select="expensys:Lines/expensys:Line/expensys:Accruals/expensys:Accrual">
>
> <txn:PSIBS>
>    <xsl:number value="count(preceding-sibling::*)"/>
> </txn:PSIBS>
>
>
> I cannot use a filter on the for-each loop 'cos AFAICS this would mean restructuring the whole
> transform. With my current level of XSL knowledge that would take an unacceptably long time :-)
>
>
> Many thanks for any help....
>
>
> Adam
>
>
>
> Sample input file snippet:
>
>
>      <Lines>
>        <Line>
>          <ItemDescription><![CDATA[MAPIC - Trip to see venues for drinks reception]]></ItemDescription>
>          <ItemNumber><![CDATA[1]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-01T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[6350]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[72000]]></accountCode>
>              <amount>
>                <value><![CDATA[15.50]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[MAPIC - Taxi airport to home ]]></ItemDescription>
>          <ItemNumber><![CDATA[2]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-01T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[6350]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[72000]]></accountCode>
>              <amount>
>                <value><![CDATA[53.90]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[MAPIC - Viewing venues for drinks reception]]></ItemDescription>
>          <ItemNumber><![CDATA[3]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-02T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[6350]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[72010]]></accountCode>
>              <amount>
>                <value><![CDATA[193.85]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[4]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-13T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[12.00]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[5]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-13T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[12.00]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[6]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-13T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[49.32]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[7]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-14T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[5.70]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[8]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-14T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[15.00]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[9]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-23T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[4.99]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[FPGC - Photo and frame for PMT as requested by James
> Darkins]]></ItemDescription>
>          <ItemNumber><![CDATA[10]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-23T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[73430]]></accountCode>
>              <amount>
>                <value><![CDATA[17.43]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>            <Accrual>
>              <accountCode><![CDATA[30540]]></accountCode>
>              <amount>
>                <value><![CDATA[3.05]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[11]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-24T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[13.91]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>        <Line>
>          <ItemDescription><![CDATA[Personal spend]]></ItemDescription>
>          <ItemNumber><![CDATA[12]]></ItemNumber>
>          <SpendDate><![CDATA[2007-10-28T00:00:00+01:00]]></SpendDate>
>          <CostCentre>
>            <costCentreCode><![CDATA[FPGC]]></costCentreCode>
>            <externalReference1><![CDATA[2003]]></externalReference1>
>          </CostCentre>
>          <ProjectCode><![CDATA[9000]]></ProjectCode>
>          <Accruals>
>            <Accrual>
>              <accountCode><![CDATA[999998]]></accountCode>
>              <amount>
>                <value><![CDATA[2.37]]></value>
>                <sense><![CDATA[debit]]></sense>
>              </amount>
>            </Accrual>
>          </Accruals>
>        </Line>
>      </Lines>
>
>
>
>
>
>
> David Carlisle wrote:
> >> What am I doing wrong?
> >
> > well you haven't shown any sopurce code, so we have to guess, but
> > presumably you get 0 bcause there are no preceding siblings.
> > that is children of the same parent.  If each Accruals element just has
> > a single Accrual child, then that will be the case.
> >
> >
> >> I know could use "position()", but after I solve this problem I need to apply a filter to the PSIBS
> >> value.
> >
> >
> > Most likely you just need to do the filter before you use position.
> >
> >
> > <xsl:for-each
> > select="expensys:Lines/expensys:Line/expensys:Accruals/expensys:Accrual[some
> > filter goes here">
> >
> > <txn:PSIBS>
> > <xsl:value-of select="position()"/>
> > </txn:PSIBS>
> >
> >
> > David
> >
> >
> >
> > ________________________________________________________________________
> > The Numerical Algorithms Group Ltd is a company registered in England
> > and Wales with company number 1249803. The registered office is:
> > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
> >
> > This e-mail has been scanned for all viruses by Star. The service is
> > powered by MessageLabs.
> > ________________________________________________________________________
> >
> >
> >
> >
>
> --
> Adam Lipscombe
>
> T: 01872 575083
> M: 07957 548686
> E: adam.lipscombe@xxxxxxxxxx

Current Thread