xsl-list
[Top] [All Lists]

Re: [xsl] Grouping using concatenated key

2006-12-11 08:57:55
David has suggested the right approach..

To add to his answer, I would suggest a key definition like:

<xsl:key name="byObligationAndPhone" match="BillDetail"
use="concat(OBLIGATION_ID, ':', PHONE_NUMBER)" />

This is more safe for a 2 level grouping.

On 12/11/06, jmcreynolds(_at_)edigitplus(_dot_)com 
<jmcreynolds(_at_)edigitplus(_dot_)com> wrote:
All,

I have been wrestling with this problem for about 3 days now.  I have
looked at the examples that Jenni has provided, but I am just not getting
it quite right.



Here is some example XML that I am using:



<BillDetail>

   <BILLING_DT>2006-12-01T00:00:00-06:00</BILLING_DT>

   <BILL_TO_ACCT_ID>11111</BILL_TO_ACCT_ID>

   <ACCT_ID>13893</ACCT_ID>

   <PHONE_NUMBER>1234567890</PHONE_NUMBER>

   <TO_NUMBER>9876543210</TO_NUMBER>

   <TO_CITY>CREVE COEU</TO_CITY>

   <TO_STATE>MO</TO_STATE>

   <RATE_PERIOD>1</RATE_PERIOD>

   <RATE_PERIOD_NAME>Day</RATE_PERIOD_NAME>

   <MINUTES>1</MINUTES>

   <AMOUNT>0.22</AMOUNT>

   <DISCOUNTED_AMT>0.09</DISCOUNTED_AMT>

   <SURCHARGE_AMT>0</SURCHARGE_AMT>

   <FEDERAL_TAX>0</FEDERAL_TAX>

   <STATE_TAX>0</STATE_TAX>

   <COUNTY_TAX>0</COUNTY_TAX>

   <CITY_TAX>0</CITY_TAX>

   <FROM_NUMBER>1234567890</FROM_NUMBER>

   <FROM_CITY>NEW HAVEN </FROM_CITY>

   <FROM_STATE>MO</FROM_STATE>

   <SOURCE>TCSI</SOURCE>

   <CIC_ID>444</CIC_ID>

   <CALL_DATE_TIME>2006-11-02T14:43:30-06:00</CALL_DATE_TIME>

   <CALL_MINUTES>0</CALL_MINUTES>

   <CALL_SECONDS>42</CALL_SECONDS>

   <BATCH_ID>987</BATCH_ID>

   <CALL_ID>135</CALL_ID>

   <CATEGORY>1</CATEGORY>

   <GROUP_NO>1</GROUP_NO>

   <ID_NO>1</ID_NO>

   <EMR_MESSAGE_TYPE_ID>1</EMR_MESSAGE_TYPE_ID>

   <SETTLEMENT_CODE>8</SETTLEMENT_CODE>

   <METHOD_OF_RECORDING>2</METHOD_OF_RECORDING>

   <RATE_CLASS>4</RATE_CLASS>

   <INDICATORS>000000000000000000500000000000</INDICATORS>

   <DISCOUNT_PLAN_IND>*</DISCOUNT_PLAN_IND>

   <BILL_GROUP_ID>24</BILL_GROUP_ID>

   <SERV_RATE_CODE>FLTAMBVD</SERV_RATE_CODE>

   <CALL_INDICATOR_ID>26</CALL_INDICATOR_ID>

   <ACCT_DISPLAY_ORDER>6</ACCT_DISPLAY_ORDER>

   <OBLIGATION_ID>2345</OBLIGATION_ID>

   <FRANCH_TAX>0</FRANCH_TAX>

 </BillDetail>

 <BillDetail>

   <BILLING_DT>2006-12-01T00:00:00-06:00</BILLING_DT>

   <BILL_TO_ACCT_ID>11111</BILL_TO_ACCT_ID>

   <ACCT_ID>13893</ACCT_ID>

   <PHONE_NUMBER>4567891230</PHONE_NUMBER>

   <TO_NUMBER>3216549870</TO_NUMBER>

   <TO_CITY>WASHINGTON</TO_CITY>

   <TO_STATE>MO</TO_STATE>

   <RATE_PERIOD>1</RATE_PERIOD>

   <RATE_PERIOD_NAME>Day</RATE_PERIOD_NAME>

   <MINUTES>1</MINUTES>

   <AMOUNT>0.22</AMOUNT>

   <DISCOUNTED_AMT>0.09</DISCOUNTED_AMT>

   <SURCHARGE_AMT>0</SURCHARGE_AMT>

   <FEDERAL_TAX>0</FEDERAL_TAX>

   <STATE_TAX>0</STATE_TAX>

   <COUNTY_TAX>0</COUNTY_TAX>

   <CITY_TAX>0</CITY_TAX>

   <FROM_NUMBER>7418529630</FROM_NUMBER>

   <FROM_CITY>NEW HAVEN </FROM_CITY>

   <FROM_STATE>MO</FROM_STATE>

   <SOURCE>TCSI</SOURCE>

   <CIC_ID>444</CIC_ID>

   <CALL_DATE_TIME>2006-11-03T09:46:04-06:00</CALL_DATE_TIME>

   <CALL_MINUTES>0</CALL_MINUTES>

   <CALL_SECONDS>24</CALL_SECONDS>

   <BATCH_ID>987</BATCH_ID>

   <CALL_ID>2812</CALL_ID>

   <CATEGORY>1</CATEGORY>

   <GROUP_NO>1</GROUP_NO>

   <ID_NO>1</ID_NO>

   <EMR_MESSAGE_TYPE_ID>1</EMR_MESSAGE_TYPE_ID>

   <SETTLEMENT_CODE>8</SETTLEMENT_CODE>

   <METHOD_OF_RECORDING>2</METHOD_OF_RECORDING>

   <RATE_CLASS>4</RATE_CLASS>

   <INDICATORS>000000000000000000500000000000</INDICATORS>

   <DISCOUNT_PLAN_IND>*</DISCOUNT_PLAN_IND>

   <BILL_GROUP_ID>24</BILL_GROUP_ID>

   <SERV_RATE_CODE>FLTAMBVD</SERV_RATE_CODE>

   <CALL_INDICATOR_ID>26</CALL_INDICATOR_ID>

   <ACCT_DISPLAY_ORDER>6</ACCT_DISPLAY_ORDER>

   <OBLIGATION_ID>00000000</OBLIGATION_ID>

   <FRANCH_TAX>0</FRANCH_TAX>

 </BillDetail>



These are just 2 dummied up records.  What I need to do is group these
records first by OBLIGATION_ID then by PHONENUMBER, and then display the
results.  Here is the key I am trying to use to accomplish this:



<xsl:key name="byObligationAndPhone" match="BillDetail"
use="concat(OBLIGATION_ID, PHONE_NUMBER)" />



I have tried looping through the XML using this key to no avail.  Could
someone steer me in the right direction?



Basically, here is what I am wanting to see:



Begin loop

Calls for OBLIGATION_ID

.

.

.

Calls for PHONE_NUMBER (that has the same OBLIGATION_ID from above)

End Loop



I need to loop through all <BillDetail> nodes, breaking it down by
OBLIGATION_ID, then beneath each OBLIGATION_ID, I need to break it down by
PHONE_NUMBER.



This is my first project using XSLT…and I am enjoying it greatly.  If I
could only get over this one hump…



Many thanks in advance,



JOHN


--
Regards,
Mukul Gandhi

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