[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] FW: key, generate-id, ignoring my template


Subject: RE: [xsl] FW: key, generate-id, ignoring my template
From: "Laura Madonna" <Laura.Madonna@xxxxxxxxx>
Date: Mon, 22 Mar 2004 14:14:30 -0700

(I have cut down the xsl and xml).
The problem is, I don't think the template to match on "page" is working:

Here are my two keys:
<xsl:key name="kbeneplan" match="/form/page/pcp/row" use="plan_desc" />  
<xsl:key name="kheading" match="/form/page/pcp/row" use="heading" />

  In the result there should be two distinct sections, Medical and Dental.
The problem is, Dental plans are appearing in the Medical section and vice versa.
It seems like this template match is not working: <xsl:template match="/form/page/pcp"> 

===xml===
<?xml version='1.0'?>
<form>
   <page name='MEDICAL'>    
        <heading2> 2004 Medical Options for Wxxxx,Donald x</heading2>                       
            <pcp>
               <row number='0'>
                  <plangroup>C</plangroup>
                  <benefit_plan>PBASIC</benefit_plan>
                  <plan_desc>PacifiCare / UA Net Basic</plan_desc>
                  <option_id>400</option_id>
                  <covrg_cd>1</covrg_cd>
                  <covrg_desc>Employee Only</covrg_desc>
                  <price>109.1</price>
                  <heading>CU Medical PLANS</heading>
                  <hlth_provider_reqd>R</hlth_provider_reqd>
                  <internal_external>I</internal_external>
                  <provider_link_cu>PACIFICARE</provider_link_cu>
                  <planType>10</planType>
                  <radio>
                     <name>pmedsel</name>
                     <value>400</value>
                     <text>Employee Only</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Click here to Lookup PCP</text>
                     <address>javascript:launchInternal('PACIFICARE')</address>
                  </link>
               </row>
               <row number='1'>
                  <plangroup>C</plangroup>
                  <benefit_plan>PBASIC</benefit_plan>
                  <plan_desc>PacifiCare / UA Net Basic</plan_desc>
                  <option_id>401</option_id>
                  <covrg_cd>2</covrg_cd>
                  <covrg_desc>Employee+Spouse/DomesticPartnr</covrg_desc>
                  <price>283.61</price>
                  <heading>CU Medical PLANS</heading>
                  <hlth_provider_reqd>R</hlth_provider_reqd>
                  <internal_external>I</internal_external>
                  <provider_link_cu>PACIFICARE</provider_link_cu>
                  <planType>10</planType>
                  <radio>
                     <name>pmedsel</name>
                     <value>401</value>
                     <text>Employee+Spouse/DomesticPartnr</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Click here to Lookup PCP</text>
                     <address>javascript:launchInternal('PACIFICARE')</address>
                  </link>
               </row>
               <row number='2'>
                  <plangroup>C</plangroup>
                  <benefit_plan>PBASIC</benefit_plan>
                  <plan_desc>PacifiCare / UA Net Basic</plan_desc>
                  <option_id>402</option_id>
                  <covrg_cd>3</covrg_cd>
                  <covrg_desc>Employee + Child(ren)</covrg_desc>
                  <price>258.17</price>
                  <heading>CU Medical PLANS</heading>
                  <hlth_provider_reqd>R</hlth_provider_reqd>
                  <internal_external>I</internal_external>
                  <provider_link_cu>PACIFICARE</provider_link_cu>
                  <planType>10</planType>
                  <radio>
                     <name>pmedsel</name>
                     <value>402</value>
                     <text>Employee + Child(ren)</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Click here to Lookup PCP</text>
                     <address>javascript:launchInternal('PACIFICARE')</address>
                  </link>
               </row>                                                                                                                                                
            </pcp>     
   </page>
   <page name='DENTAL'>     
            <heading2>2004 Dental Options for Wxxxx,Donald x</heading2>                                              
            <pcp>
               <row number='0'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DEPO</benefit_plan>
                  <plan_desc>Delta Exclsv Pnl Optn</plan_desc>
                  <option_id>325</option_id>
                  <covrg_cd>1</covrg_cd>
                  <covrg_desc>Employee Only</covrg_desc>
                  <price>0</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>325</value>
                     <text>Employee Only</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='1'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DEPO</benefit_plan>
                  <plan_desc>Delta Exclsv Pnl Optn</plan_desc>
                  <option_id>326</option_id>
                  <covrg_cd>2</covrg_cd>
                  <covrg_desc>Employee+Spouse/DomesticPartnr</covrg_desc>
                  <price>13.5</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>326</value>
                     <text>Employee+Spouse/DomesticPartnr</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='2'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DEPO</benefit_plan>
                  <plan_desc>Delta Exclsv Pnl Optn</plan_desc>
                  <option_id>327</option_id>
                  <covrg_cd>3</covrg_cd>
                  <covrg_desc>Employee + Child(ren)</covrg_desc>
                  <price>16.36</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>327</value>
                     <text>Employee + Child(ren)</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='3'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DEPO</benefit_plan>
                  <plan_desc>Delta Exclsv Pnl Optn</plan_desc>
                  <option_id>328</option_id>
                  <covrg_cd>4</covrg_cd>
                  <covrg_desc>Family</covrg_desc>
                  <price>29.86</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>328</value>
                     <text>Family</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='4'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DDPO</benefit_plan>
                  <plan_desc>Delta DPO Dental</plan_desc>
                  <option_id>321</option_id>
                  <covrg_cd>1</covrg_cd>
                  <covrg_desc>Employee Only</covrg_desc>
                  <price>17.23</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>321</value>
                     <text>Employee Only</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='5'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DDPO</benefit_plan>
                  <plan_desc>Delta DPO Dental</plan_desc>
                  <option_id>322</option_id>
                  <covrg_cd>2</covrg_cd>
                  <covrg_desc>Employee+Spouse/DomesticPartnr</covrg_desc>
                  <price>45.33</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>322</value>
                     <text>Employee+Spouse/DomesticPartnr</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='6'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DDPO</benefit_plan>
                  <plan_desc>Delta DPO Dental</plan_desc>
                  <option_id>323</option_id>
                  <covrg_cd>3</covrg_cd>
                  <covrg_desc>Employee + Child(ren)</covrg_desc>
                  <price>51.71</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>323</value>
                     <text>Employee + Child(ren)</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>
               <row number='7'>
                  <plangroup>C</plangroup>
                  <benefit_plan>DDPO</benefit_plan>
                  <plan_desc>Delta DPO Dental</plan_desc>
                  <option_id>324</option_id>
                  <covrg_cd>4</covrg_cd>
                  <covrg_desc>Family</covrg_desc>
                  <price>79.81</price>
                  <heading>CU Dental PLANS</heading>
                  <hlth_provider_reqd>N</hlth_provider_reqd>
                  <internal_external> </internal_external>
                  <provider_link_cu> </provider_link_cu>
                  <planType>11</planType>
                  <radio>
                     <name>pdensel</name>
                     <value>324</value>
                     <text>Family</text>
                     <checked>N</checked>
                  </radio>
                  <link>
                     <text>Primary Care Provider Not Required</text>
                     <address></address>
                  </link>
               </row>             
         </pcp>                  
   </page>
</form>
===xsl===
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
<HTML xmlns:v="urn:schemas-microsoft-com:vml">
   <xsl:apply-templates />
</HTML>
</xsl:template>

<xsl:key name="kbeneplan" match="/form/page/pcp/row" use="plan_desc" />  
<xsl:variable name="vBenePlan" select="/form/page/pcp/*[generate-id() = generate-id(key('kbeneplan', plan_desc)[1])]" />

<xsl:key name="kheading" match="/form/page/pcp/row" use="heading" />
<xsl:variable name="vheading" select="/form/page/pcp/*[generate-id() = generate-id(key('kheading', heading)[1])]" />
 
<xsl:template match="/form/page/pcp"> 

<table cellspacing="2" cellpadding="3" border="1" >

<xsl:for-each select="$vBenePlan">
<xsl:variable name="vCount" select="count(/form/page/pcp//*[plan_desc = current() /plan_desc])" />

<xsl:if test="not(preceding-sibling::row[heading = current() /heading][1])"> 
  <tr>
    <td colspan="4">
      <b> <xsl:copy-of select="heading" />  </b>
    </td>
  </tr>
</xsl:if>    
 <tr> 
  <td>
      <xsl:attribute name="rowspan">
         <xsl:value-of select="$vCount + 1" /> 
       </xsl:attribute>    
     <b> <xsl:copy-of select="plan_desc" />  </b>
  </td>  
 </tr>
  
<xsl:for-each select="key('kbeneplan', plan_desc)">
  <tr>
    <td>     
        <xsl:value-of select="covrg_desc" />
    </td>   
    <td>
        <xsl:value-of select="price" />
    </td>
  <xsl:if test="not(preceding-sibling::row[plan_desc = current() /plan_desc][1])">
   <td>                   
       <xsl:attribute name="rowspan">
          <xsl:value-of select="$vCount + 1" /> 
       </xsl:attribute>  
      <xsl:element name="a">
      <xsl:attribute name="href">
         <xsl:copy-of select="address"/>
      </xsl:attribute>
         <xsl:copy-of select="link/text"/>
      </xsl:element> 
   </td>
  </xsl:if>  
 </tr>
</xsl:for-each>
    
</xsl:for-each>
  </table>   
</xsl:template>


<xsl:template match="Bigger">
   <FONT size="+2">
      <xsl:value-of select="."/>
   </FONT>
</xsl:template>

<xsl:template match="heading2">
   <b><FONT size="+2">
      <xsl:value-of select="."/>
   </FONT></b>
</xsl:template>
</xsl:stylesheet>


Current Thread
Keywords
xsl