[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Grouping using concatenated key

Subject: Re: Grouping using concatenated key
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Mon, 11 Dec 2006 21:27:35 +0530
Re:  Grouping using concatenated key
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@xxxxxxxxxxxxxx <jmcreynolds@xxxxxxxxxxxxxx> 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 XSLTand I am enjoying it greatly.  If I
could only get over this one hump



Many thanks in advance,



JOHN


--
Regards,
Mukul Gandhi

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.