Subject: [xsl] grouping after a group using 1.0 From: "Friend, Darris E" <FRIENDDE@xxxxxxx> Date: Wed, 19 Nov 2008 17:07:38 -0500 |
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>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] xsl:function vs. xsl:temp, Michael Kay | Thread | Re: [xsl] grouping after a group us, G. Ken Holman |
Re: [xsl] XTRE1160: The fragment id, Michael Ludwig | Date | Re: [xsl] no output files, Dimitre Novatchev |
Month |