xsl-list
[Top] [All Lists]

[xsl] Problem with grouping on elements that are not always present

2010-08-11 02:55:40
I trying to do a two level group using keys and failing given the following 
data. The first group is on <WorkArea> the second on  <Skill>.  See --Data 
Start-- below
My problem is that I don't know how to deal with the fact that there is not 
always a WorkArea or Skill element and I want to include all data even when 
either or these elements don't exist.

I am trying to use the stylesheet below see --StyleSheet Start--

I am successful when a Skill element exists but not when it doesn't. In  
addition if there is  WorkArea and no skill I do not see the row I want  ie 
There should be an output in my data for all those Sheets without a WorkArea or 
Skill and with a WorkArea if there is no skill. ie TransactionNo = (1,2,8) do 
not show up

Thanks
--StyleSheet Start--
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
        <xsl:output method="html"/>
        <xsl:key name="WorkAreas"   match="Sheet/PlanningData"   
use="concat(WorkArea,'None')" />       
        <xsl:key name="Skills"   match="SkillRequirement"   
use="concat(../WorkArea,'None',Skill,'None')" />    

        <xsl:template match="CertificationSheets">
                <HTML>
                        <HEAD><TITLE>TEST</TITLE></HEAD>
                        <BODY>
                        <xsl:apply-templates 
select="Sheet/PlanningData/SkillRequirement [generate-id(.) =
                                                 
generate-id(key('Skills',concat(../WorkArea,'None',Skill,'None'))[1])]">
                        </xsl:apply-templates>

                        </BODY>
                </HTML>
        </xsl:template>
<xsl:template match="SkillRequirement"> 
   <P>Work Area: <xsl:value-of select="../WorkArea"/>   </P>
   <P>Skill: <xsl:value-of select="Skill"/>     </P>

        <P>             
                <TABLE border="1">
                        <TBODY>
                                <TR>
                                        <TD>
                                                <B>Trn #</B>
                                        </TD>
                                        <TD>
                                                <B>Type</B>
                                        </TD>

                                </TR>   

                                        <xsl:for-each 
select="key('Skills',concat(../WorkArea,'None',Skill,'None'))">
                                <TR>
                                        <TD>
                                                <B><xsl:value-of 
select="../../Summary/WorkOrderInfo/TransactionNo" /></B>
                                        </TD>
                                        <TD>
                                                <B>
                                                        <xsl:value-of 
select="../../Detail/Task/Type" />
                                                </B>
                                        </TD>
                                </TR>
                                </xsl:for-each>
                        </TBODY>
                </TABLE>
                </P>
</xsl:template>


</xsl:stylesheet>

--StyleSheet End--

--Data Start--

<?xml version="1.0" encoding="CP437"?>                                          
                                                                                
                                        
<?xml-stylesheet type="text/xsl" href="task_summ_html.xsl"?>
<CertificationSheets>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000001</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>SERV</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>EI&amp;R</WorkArea>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000002</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>INSP/FUNC</Type>
                        </Task>
                </Detail>
                <PlanningData>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000003</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>OPTNL CK</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>EI&amp;R</WorkArea>
                        <SkillRequirement>
                                <Skill>ELEC/INST</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000004</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>OPTNL CK</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>EI&amp;R</WorkArea>
                        <SkillRequirement>
                                <Skill>ELEC/INST</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000005</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>OPTNL CK</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>CCC</WorkArea>
                        <SkillRequirement>
                                <Skill>AIRFRAME</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000006</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>INSP</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>LH ENG</WorkArea>
                        <SkillRequirement>
                                <Skill>ELECTRICAL</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                        <SkillRequirement>
                                <Skill>AIRFRAME</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000007</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>INSP</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <WorkArea>LH ENG</WorkArea>
                        <SkillRequirement>
                                <Skill>ELECTRICAL</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000008</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>INSP/FUNC</Type>
                        </Task>
                </Detail>
                <PlanningData>
                </PlanningData>
        </Sheet>
        <Sheet>
                <Summary>
                        <WorkOrderInfo>
                                <TransactionNo>000009</TransactionNo>
                        </WorkOrderInfo>
                </Summary>
                <Detail>
                        <Task>
                                <Type>INSP</Type>
                        </Task>
                </Detail>
                <PlanningData>
                        <SkillRequirement>
                                <Skill>ELECTRICAL</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                        <SkillRequirement>
                                <Skill>ENGINES</Skill>
                                <ManHours> 1.00</ManHours>
                        </SkillRequirement>
                </PlanningData>
        </Sheet>
</CertificationSheets>             
--Data End-
                                                                                
                                                                                
    




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