xsl-list
[Top] [All Lists]

[xsl] Re: Display the number of records in a group

2010-03-17 11:16:27
Hi David,

Iam using Oracle XSLT processor,
and in  my out put it is dispalying  position()= 8 , last() = 11

so, is there any other way to capture the last record in a group
 (or)
to capture maximum postion value  without using  "position()=last()"  condition.

In jdev When i used function  MAX( element name)  it is showing correct value

But the same ( max function )  is erroring out in oracle Applications
( may be because of  different XMl praser. )

how can i acheive this

Any suggestions?

Thanks
Anil



===============================
That would be a bug.

In every context where XSLT is iterating over a sequence and
position() has a value at all then position(0 takes on all values
between 1 and last() inclusive.

Of course if you have a conditional section within the scope of
position then position()=last() might never be true eg
<xsl:for-each select="*">
<xsl:if test="self::foo">
  <xsl:if tets="position()=last()"...

will not be true if the last node is not foo, however I don't see any
such conditional code in your code fragments.

David

On 09/03/2010 10:10, anil kumar wrote:
Hence the condition  "position()=last()" ( 8 = 11)   never occurs, so
iam failing to display the  last record.



=========================
HI,

I  want to display the number of records in a group,

expected o/p is
<mezo eazon="0A0001D003A">8</mezo>


current o/p :
<mezo eazon="0A0001D003A">11111111</mezo>


my xsl :
<xsl:template match="/">
<mezo eazon="0A0001D003A">
<xsl:apply-templates select=".//ARXEURSL" mode="temp2">
</xsl:apply-templates></mezo><xsl:text>&#xD;</xsl:text>
  </xsl:template>

<xsl:template name="ttpgds" match="ARXEURSL" mode="temp2">
<xsl:for-each-group select="G_ROW[INTRA_EU_TRX_CODE =
('GOOD','TRIANGULATION')]"
group-by="concat(VAT_TAX_NO,BILL_CUST_NAME,INTRA_EU_TRX_CODE)">
<xsl:value-of select="sum(count(COUNTRY_CODE))"/>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>

How to show the toatal number of records,
ima failing to get this by  last()
because iam  grouping 11 records into 8 , so the value of last() is
giving 11  which is in correct


my xml :
<?xml version="1.0" encoding="UTF-8"?>
<ARXEURSL>
<P_REPORT_TYPE>D</P_REPORT_TYPE>
<P_INTRA_EU_GOODS_TRX>GOOD</P_INTRA_EU_GOODS_TRX>
<P_INTRA_EU_SERVICES_TRX>SERVICE</P_INTRA_EU_SERVICES_TRX>
<P_INTRA_EU_VAT_TRX_1>TRIANGULATION</P_INTRA_EU_VAT_TRX_1>
<G_SOB>
<SOB_NAME>Progress UK</SOB_NAME>
<TRADER_VAT_NO>BE21212121</TRADER_VAT_NO>
<SOB_CURRENCY>GBP</SOB_CURRENCY>
</G_SOB>
<G_REMIT_TO>
<ADDRESS1>TEST ADD FOR XML Testing BE</ADDRESS1>
<ADDRESS2/>
<ADDRESS3/>
<ADDRESS4/>
<CITY>VIZAG</CITY>
<POSTAL_CODE>54321</POSTAL_CODE>
<STATE/>
<COUNTRY/>
</G_REMIT_TO>
<G_ROW>
<COUNTRY_CODE>BE</COUNTRY_CODE>
<VAT_TAX_NO>123</VAT_TAX_NO>
<BILL_CUST_NAME>ABC</BILL_CUST_NAME>
<ACCTD_AMOUNT>10</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>BE</COUNTRY_CODE>
<VAT_TAX_NO>123</VAT_TAX_NO>
<BILL_CUST_NAME>ABC</BILL_CUST_NAME>
<ACCTD_AMOUNT>20</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>BE</COUNTRY_CODE>
<VAT_TAX_NO>123</VAT_TAX_NO>
<BILL_CUST_NAME>ABC</BILL_CUST_NAME>
<ACCTD_AMOUNT>30</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>AT</COUNTRY_CODE>
<VAT_TAX_NO>456</VAT_TAX_NO>
<BILL_CUST_NAME>DEF</BILL_CUST_NAME>
<ACCTD_AMOUNT>10</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>IND</COUNTRY_CODE>
<VAT_TAX_NO>789</VAT_TAX_NO>
<BILL_CUST_NAME>GHI</BILL_CUST_NAME>
<ACCTD_AMOUNT>10</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>IND</COUNTRY_CODE>
<VAT_TAX_NO>567</VAT_TAX_NO>
<BILL_CUST_NAME>JKL</BILL_CUST_NAME>
<ACCTD_AMOUNT>10</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>IND</COUNTRY_CODE>
<VAT_TAX_NO>234</VAT_TAX_NO>
<BILL_CUST_NAME>BCD</BILL_CUST_NAME>
<ACCTD_AMOUNT>20</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>IND</COUNTRY_CODE>
<VAT_TAX_NO>345</VAT_TAX_NO>
<BILL_CUST_NAME>CDE</BILL_CUST_NAME>
<ACCTD_AMOUNT>20</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>GOOD</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>UK</COUNTRY_CODE>
<VAT_TAX_NO>678</VAT_TAX_NO>
<BILL_CUST_NAME>TTT</BILL_CUST_NAME>
<ACCTD_AMOUNT>30</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>TRIANGULATION</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>UK</COUNTRY_CODE>
<VAT_TAX_NO>678</VAT_TAX_NO>
<BILL_CUST_NAME>TTT</BILL_CUST_NAME>
<ACCTD_AMOUNT>20</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>TRIANGULATION</INTRA_EU_TRX_CODE>
</G_ROW>
<G_ROW>
<COUNTRY_CODE>UK</COUNTRY_CODE>
<VAT_TAX_NO>321</VAT_TAX_NO>
<BILL_CUST_NAME>TRA</BILL_CUST_NAME>
<ACCTD_AMOUNT>10</ACCTD_AMOUNT>
<INTRA_EU_TRX_CODE>TRIANGULATION</INTRA_EU_TRX_CODE>
</G_ROW>
</ARXEURSL>


Thanks
Anil

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>