xsl-list
[Top] [All Lists]

Re: [xsl] Grouping using concatenated key

2006-12-11 09:14:15
Sorry for being thick headed...and I am not looking for anyone to write my
code for me.  But being so new to XSLT I have a ton of questions, this
just being the current hurdle.

David, I did as you instructed.  See my XSL file below:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:dt="http://xsltsl.org/date-time";>
  <xsl:import href="http://xsltsl.sourceforge.net/modules/stdlib.xsl"/>

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

    <!--
        This is an XSLT template file. Fill in this area with the
        XSL elements which will transform your XML to XHTML.
    -->
  <xsl:template match="/">
    <table border="1">
      <tr>
        <th>OBLIGATION_ID</th>
        <th>PHONE_NUMBER</th>
      </tr>
      <xsl:for-each
select="BillDetail[generate-id()=generate-id(key('byObligation',OBLIGATION_ID))]">
      Calls for <xsl:value-of select="OBLIGATION_ID"/>
      <!-- now further group this by phone -->
      <xsl:variable name="OBLIGATION" select="OBLIGATION_ID"/>
      <xsl:for-each
select="../BillDetail[generate-id()=generate-id(key('byObligationAndPhone',concat($OBLIGATION,PHONE_NUMBER)))]">
        <tr>
          <td>
            <xsl:value-of select="OBLIGATION_ID"/>
          </td>
          <td>
            <xsl:value-of select="PHONE_NUMBER"/>
          </td>
        </tr>
      whatever
      ...
      </xsl:for-each>
    </xsl:for-each>
    </table>
    </xsl:template>
</xsl:stylesheet>

All that gets displayed is just the <th> tags...no data.

Again, I am sorry that I am so green to all of this.  In just a few days
of messing around with this technology, I am wishing I had this knowledge
in my "toolkit" many moons ago...

Many thanks again!

JOHN



assuming thi sis xslt1, you need two keys
1st level

<xsl:key name="byObligation" match="BillDetail" use="OBLIGATION_ID" />
second

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


then just muenchian group as usual

<xsl:for-each
select="BillDetail[generate-id()=generate-id(key('byObligation',OBLIGATION_ID))]">
 this is the group for <xsl:value-of select="OBLIGATION_ID"/>
 now further group this by phone
 <xsl:variable name="OBLIGATION" select="OBLIGATION_ID"/>
 <xsl:for-each
 select="../BillDetail[generate-id()=generate-id(key('byObligationAndPhone'
         ,concat($OBLIGATION,PHONE_NUMBER)))]"/>
  whatever
...

David


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




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