(Sending it again, removed the extra spaces in the code)
Hello All,
I am trying to calculate the Sum of total Missing Docs.
Here is my XML:
<data>
<event_template sp_mand_doctypes="PSC Minutes, Internal Approval,
Rationale, Trade Instructions, IPS, Final Client Models">
<event complete="N">
<document_type sp_document_type="Final Client Models"/>
</event>
<event complete="N">
<document_type sp_document_type="Final Client Models"/>
<document_type sp_document_type="Rationale"/>
</event>
<event complete="N">
<document_type sp_document_type="Analyst"/>
</event>
</event_template>
<event_template sp_mand_doctypes="PSC Minutes, Rationale, IPS, Final
Client Models">
<event complete="N">
<document_type sp_document_type="Final Client Models"/>
</event>
<event complete="N">
<document_type sp_document_type="Final Client Models"/>
<document_type sp_document_type="Rationale"/>
</event>
</event_template>
</data>
Previously I used following template to calculate number of missing
events, thanks to David for that.
<xsl:template name="eventTemplate">
<xsl:for-each select="event">
<xsl:call-template name="NumDocumentsMissing"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="NumDocumentsMissing">
<xsl:choose>
<xsl:when test="@complete='Y'">
<xsl:text>--</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="x"
select="tokenize(parent::node()/@sp_mand_doctypes,'\s*,\s*')"/>
<xsl:value-of
select="count($x[not(.=current()/document_type/@sp_document_type)])"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
I got the required output 5,4,6,3,2.
Now I am trying to add all those values and for that I am using this
function, so I want the total to be 5+4+6+3+2=20
<xsl:function name="fns:totalMissing">
<xsl:param name="event" as="element()"/>
<xsl:choose>
<xsl:when test="$event/@complete='Y'">
<xsl:sequence select="0"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="x"
select="tokenize($event/../@sp_mand_doctypes,'\s*,\s*')"/>
<xsl:sequence
select="count($x[not($event/document_type/@sp_document_type)])"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
And calling this function in this way
<xsl:sequence select="sum(//event/fns:totalMissing(.))"/>
I am not able to get the desired output. Looks like Function is not
calculating the value at each event properly. Please correct me where
I am doing it wrong.
Thanks
Shashank
----------------------------------------
From: shashankjain(_at_)live(_dot_)com
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
CC: davidc(_at_)nag(_dot_)co(_dot_)uk
Date: Mon, 26 Apr 2010 11:51:19 -0500
Subject: RE: [xsl] Total Missing documents for each Event
Hello All,
I am trying to calculate the Sum of total Missing Docs.
Here is my XML:
Previously I used following template to calculate number
of missing events, thanks to David for that.
select="event">
name="NumDocumentsMissing"/>
test="@complete='Y'">
--
name="x"
select="tokenize(parent::node()/@sp_mand_doctypes,'\s*,\s*')"/>
select="count($x[not(.=current()/document_type/@sp_document_type)])"/>
I got the required output 5,4,6,3,2.
Now I am trying to add all those values and for that I am
using this function, so I want the total to be 5+4+6+3+2=20
name="event" as="element()"/>
test="$event/@complete='Y'">
select="0"/>
select="tokenize($event/../@sp_mand_doctypes,'\s*,\s*')"/>
select="count($x[not($event/document_type/@sp_document_type)])"/>
And calling this function in this way
I am not able to get the desired output. Looks like
Function is not calculating the value at each event properly. Please correct
me
where I am doing it wrong.
Thanks
Shashank
From: shashankjain(_at_)live(_dot_)com
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
CC: davidc(_at_)nag(_dot_)co(_dot_)uk
Date: Fri, 9 Apr 2010 11:35:27 -0500
Subject: RE: [xsl] Total Missing documents for each Event
Thanks David !
You understood my requirement very well, this is exactly what I wanted.
I agree my code is vastly complicated , I will work on it to write more
efficient code.
Thanks again.
Shashank
----------------------------------------
Date: Fri, 9 Apr 2010 17:00:02 +0100
From: davidc(_at_)nag(_dot_)co(_dot_)uk
To: shashankjain(_at_)live(_dot_)com
CC: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Total Missing documents for each Event
Either I'm not understanding your requirements or your code is vastly
more complicated than needed (or both)
i think you just want
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
select="tokenize(@sp_mand_doctypes,'\s*,\s*')"/>
For event
list is:
select="$x[not(.=current()/document_type/@sp_document_type)]"
separator=","/>
count
select="count($x[not(.=current()/document_type/@sp_document_type)])"/>
additional docs:
select="document_type/@sp_document_type[not(.=$x)]"
separator=","/>
count
which makes
$ saxon9 list.xml list.xsl
For event 1
list is: PSC Minutes,Internal Approval,Rationale,Trade
Instructions,IPS count 5
additional docs: count 0
For event 2
list is: PSC Minutes,Internal Approval,Trade Instructions,IPS count 4
additional docs: count 0
For event 3
list is: PSC Minutes,Internal Approval,Rationale,Trade
Instructions,IPS,Final Client Models count 6
additional docs: Analyst count 1
________________________________________________________________________
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.
________________________________________________________________________
--~------------------------------------------------------------------
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:
--~--
_________________________________________________________________
The New Busy is not the too busy. Combine all your e-mail accounts with
Hotmail.
http://www.windowslive.com/campaign/thenewbusy?tile=multiaccount&ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_4
--~------------------------------------------------------------------
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:
--~--
_________________________________________________________________
The New Busy is not the old busy. Search, chat and e-mail from your inbox.
http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_3
--~------------------------------------------------------------------
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:
--~--
_________________________________________________________________
The New Busy is not the old busy. Search, chat and e-mail from your inbox.
http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_3
--~------------------------------------------------------------------
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>
--~--