xsl-list
[Top] [All Lists]

[xsl] grouping after a group using 1.0

2008-11-19 17:11:09
I am using 1.0 and can not use 2.0. All client
machines will use IE6 on Windows XP machines to view the report. I can
not
alter the XML output/format. I can only create an XSL to show the data
in a
report.

Mr. Ludwig helped me group on a another data file grouping question, 
see xsl-list/archives/200811/msg00100.html

I took what he returned and manipulated it so that I can do more
grouping on the xml data below. The result I get is duplicated data that
is not properly grouped, but I am almost there. I think it has to do
with the second for-each, or maybe the first one. I know it's the loop
that is the problem, but I don't know how to correct it.

Anyway, what I am looking for is the following result:
ConnectionObjectID: ConObjNumber1
            PremiseID: PremiseNumber1
                        InstallNumber1   InstallType1
            PremiseID: PremiseNumber2
                        InstallNumber1 InstallType1
                        InstallNumber2 Install Type2
ConnectionObjectID: ConObjNumber2
            PremiseID: PremiseNumber2
                        Etc etc

This is the XSL:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method='html' version='1.0' encoding='UTF-8' indent='yes'/>
<!-- Define Keys to Group Elements-->
<xsl:key name="SAPConnIDGroup" match="ObjectClassField[ @name = 'SAP
ConnectionObject ID']" use="."/>
<xsl:key name="SAPPremiseIDGroup" match="ObjectClassField[ @name = 'SAP
Premise ID']" use="."/>
<xsl:key name="SAPPremiseID"
 
match="MapDocumentRelationships/ObjectClass/ObjectClassRows/ObjectClassR
ow"
                                 use="ObjectClassField[ @name = 'SAP
Premise ID']"/>
<xsl:template match="/">
<html>
<head>
<title>SAP ConnectionObject ID Report</title>
<style type="text/xsl">
body, td, th
{
font-size:80%;
font-family:Verdana,Arial,Sans-serif;
color:#000000;
text-align:left;
}
table
{  border-collapse: collapse;
width: 100%;
table-layout: fixed;
border-style: solid;
}
table, td
{  border-width: 1px;
}
td
{  color: black;
font-family: Arial;
font-size: x-small;
border-right-style: none;
border-left-style: none;
border-top-style: solid;
border-bottom-style: solid;
}
.DarkBack
{  background-color: #0066FF;
background-color: blue;
color: white;
font-weight: bold;
}
.LightBack
{  background-color: #FFFF00;
color: yellow;
}
.RightJustified
{  text-align: right;
}
</style>
</head>
<body>
<h3>SAP Connection ID at Selected Address(s)</h3>
<xsl:for-each select="/*/*/MapDocumentRelationships//ObjectClassField[
@name = 'SAP ConnectionObject ID']">
<xsl:sort select="." data-type="number"/>
<xsl:if test="generate-id() = generate-id( key( 'SAPConnIDGroup',
.)[1])">
<table>
<tr bgcolor="#ffff00">
<th>
<xsl:text>Connection Object ID: </xsl:text>
<xsl:value-of select="."/>
</th>
</tr>
</table>
</xsl:if>
<xsl:for-each select="/*/*/MapDocumentRelationships//ObjectClassField[
@name = 'SAP Premise ID']">
<xsl:sort select="." data-type="number"/>
<xsl:if test="generate-id() = generate-id( key( 'SAPPremiseIDGroup',
.)[1])">
<table>
<tr bgcolor="#9acd32">
<th>
<xsl:text>Premise ID: </xsl:text>
<xsl:value-of select="."/>
</th>
</tr>
</table>
<table border="2" cellpadding="2" cellspacing="1">
<tr bgcolor="dod2c4">
<th>Install Number</th>
<th>Install Type</th>
</tr>
<!-list install objects by premise>
<xsl:for-each select="key( 'SAPPremiseID', .)">
<xsl:sort select="ObjectClassField[ @name = 'SAP Premise ID']"
order="ascending"/>
<tr>
<xsl:apply-templates select="."/>
</tr>
</xsl:for-each>
</table>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>

<xsl:template match="ObjectClassRow">
<!-- Extend this to display more information. -->
<td>
<xsl:value-of select="ObjectClassField[ @name = 'SAP Install Number']"/>
</td>
<td>
<xsl:variable name="sit" select="ObjectClassField[ @name = 'SAP Install
Type']"/>
<xsl:choose>
<xsl:when test="$sit = 'ATTG'">AttenGen</xsl:when>
<xsl:when test="$sit = 'BIOS'">BioSolids</xsl:when>
<xsl:when test="$sit = 'ELEC'">Electric</xsl:when>
<xsl:when test="$sit = 'GRUC'">GRUCom</xsl:when>
<xsl:when test="$sit = 'GRUN'">GRUNet</xsl:when>
<xsl:when test ="$sit = 'HYDW'">Hydrant</xsl:when>
<xsl:when test="$sit = 'IRRW'">Irrigation</xsl:when>
<xsl:when test="$sit = 'LGHT'">Light or Pole Rental</xsl:when>
<xsl:when test="$sit = 'LPGS'">LP Gas</xsl:when>
<xsl:when test="$sit = 'NGS'">Natural Gas</xsl:when>
<xsl:otherwise>UNK</xsl:otherwise>
</xsl:choose>
</td>
</xsl:template>
</xsl:stylesheet>

And now the XML data (for the record the ConnectionObjectID, PremiseID
and InstallNumbers were changed to protect customer information):

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl'
href='C:\GISData\MobileConfiguration\SAPConnectionIDatGAP.xsl'?>
<ReportDefinition>
  <ReportObject name="SAPConnectionIDatGAP">
    <ObjectClass name="Address Points">
      <ObjectClassFieldDefinition />
      <ObjectClassRows>
        <ObjectClassRow OBJECTID="30582" />
        <ObjectClassRow OBJECTID="30583" />
      </ObjectClassRows>
    </ObjectClass>
    <MapDocumentRelationships>
      <ObjectClass name="SAP_INSTALLATION">
        <ObjectClassFieldDefinition>
          <FieldDefinition>SAP ConnectionObject ID</FieldDefinition>
          <FieldDefinition>SAP Premise ID</FieldDefinition>
          <FieldDefinition>SAP Install Number</FieldDefinition>
          <FieldDefinition>SAP Install Type</FieldDefinition>
        </ObjectClassFieldDefinition>
        <ObjectClassRows>
          <ObjectClassRow OBJECTID="120552">
            <ObjectClassField name="SAP ConnectionObject
ID">221</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4250</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12120</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">WATR</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120481">
            <ObjectClassField name="SAP ConnectionObject
ID">221</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4250</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12125</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">NTGS</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120558">
            <ObjectClassField name="SAP ConnectionObject
ID">221</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4250</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12126</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">WSTU</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120475">
            <ObjectClassField name="SAP ConnectionObject
ID">221</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4250</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12129</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">ELEC</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120643">
            <ObjectClassField name="SAP ConnectionObject
ID">228</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4258</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12124</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">WSTU</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120569">
            <ObjectClassField name="SAP ConnectionObject
ID">228</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4258</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12127</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">WATR</ObjectClassField>
          </ObjectClassRow>
          <ObjectClassRow OBJECTID="120563">
            <ObjectClassField name="SAP ConnectionObject
ID">228</ObjectClassField>
            <ObjectClassField name="SAP Premise
ID">4258</ObjectClassField>
            <ObjectClassField name="SAP Install
Number">12121</ObjectClassField>
            <ObjectClassField name="SAP Install
Type">ELEC</ObjectClassField>
          </ObjectClassRow>
        </ObjectClassRows>
      </ObjectClass>
    </MapDocumentRelationships>
  </ReportObject>
</ReportDefinition>



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