|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Group by Element based on Attribute inside container
I am new to the XML/XSL world, I hope the terminology of the subject line
correctly reflects my problem. 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.
I have read and tried many examples this week concerning the Muenchian method.
The examples are good but the XML format used in the examples seems simpler
than the format I am using. I have made great effort in altering Jenni
Tennison's example. The best I can do for output is based on this example
http://www.zvon.org/xxl/XSLTreference/OutputOverview/xslt_key_frame.html
However it does not group.
What I need is to group by (and sort) the valve number, list the inspections
for that valve sorted by the most recent date (if sort by a date is possible).
For example:
ValveNumber: 992
DateInspected1 InspectedBy1 RepairsMade1 ...
DateInspected2 InspectedBy2 ReapirsMade2 ...
ValveNumber: 993
DateInspected1 InpsectedBy1 ReapirsMade1 ...
Some of the hurdles I need to overcome are how to assign the correct variables
for the Key and properly format the Count or GenerateID method as described in
Jenni's examples.
Some of my efforts:
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version =
"1.0" >
<xsl:output method = "text" />
<xsl:key name = "keyFacilityID" match = "ObjectClassField" use =
"@name" />
<xsl:template match = "/" >
<xsl:apply-templates select =
"ObjectClassField[count(.| key('keyFacilityID','Valve
Number')[1])=1]"><!--"key('keyFacilityID','Valve Number')"-->
<xsl:sort/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match = "ObjectClassField" >
<xsl:text >
</xsl:text>
<xsl:value-of select = "@name"/>
<xsl:text >
</xsl:text>
<xsl:value-of select = "." />
</xsl:template>
</xsl:stylesheet>
*********************
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" version =
"1.0" >
<xsl:output method = "text" />
<xsl:variable name="varFaciltyID"
select="//GeodatabaseRelationships/ObjectClass/ObjectClassRows/ObjectClassRow
/ObjectClassField/@name"/>
<!--xsl:variable name="ns2" select="wrapper/st[@ns2]"/-->
<xsl:key name="target-node-set"
match="//GeodatabaseRelationships/ObjectClassRows/ObjectClassRow/ObjectClassF
ield" use="."/>
<xsl:template match="/">
Valve:
<xsl:for-each select="$varFacilityID">
"<xsl:value-of select="."/>"
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
************
The XML data:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='C:\GISData\MobileConfiguration\Valve
Report.xsl'?>
<ReportDefinition>
<ReportObject name="gasValve">
<ObjectClass name="Gas Valve">
<ObjectClassFieldDefinition />
<ObjectClassRows>
<ObjectClassRow OBJECTID="41676" />
<ObjectClassRow OBJECTID="41677" />
</ObjectClassRows>
</ObjectClass>
<GeodatabaseRelationships>
<ObjectClass name="GVALVEINSPECTION">
<ObjectClassFieldDefinition>
<FieldDefinition>Valve Number</FieldDefinition>
<FieldDefinition>Date Inspected</FieldDefinition>
<FieldDefinition>Inspected By</FieldDefinition>
<FieldDefinition>Repairs Made</FieldDefinition>
<FieldDefinition>Valve Position Found</FieldDefinition>
<FieldDefinition>Valve Position Left</FieldDefinition>
<FieldDefinition>Notes</FieldDefinition>
</ObjectClassFieldDefinition>
<ObjectClassRows>
<ObjectClassRow OBJECTID="629">
<ObjectClassField name="Valve Number">993</ObjectClassField>
<ObjectClassField name="Date
Inspected">01/31/2000</ObjectClassField>
<ObjectClassField name="Inspected
By">Wingenbach</ObjectClassField>
<ObjectClassField name="Repairs Made">N</ObjectClassField>
<ObjectClassField name="Valve Position Found" />
<ObjectClassField name="Valve Position Left" />
<ObjectClassField name="Notes" />
</ObjectClassRow>
<ObjectClassRow OBJECTID="1626">
<ObjectClassField name="Valve Number">993</ObjectClassField>
<ObjectClassField name="Date
Inspected">02/28/2001</ObjectClassField>
<ObjectClassField name="Inspected By">Ukweli</ObjectClassField>
<ObjectClassField name="Repairs Made">N</ObjectClassField>
<ObjectClassField name="Valve Position Found" />
<ObjectClassField name="Valve Position Left" />
<ObjectClassField name="Notes" />
</ObjectClassRow>
<ObjectClassRow OBJECTID="1697">
<ObjectClassField name="Valve Number">992</ObjectClassField>
<ObjectClassField name="Date
Inspected">03/13/2002</ObjectClassField>
<ObjectClassField name="Inspected By">Ukweli</ObjectClassField>
<ObjectClassField name="Repairs Made">N</ObjectClassField>
<ObjectClassField name="Valve Position Found" />
<ObjectClassField name="Valve Position Left" />
<ObjectClassField name="Notes" />
</ObjectClassRow>
<ObjectClassRow OBJECTID="1212">
<ObjectClassField name="Valve Number">992</ObjectClassField>
<ObjectClassField name="Date
Inspected">03/22/1989</ObjectClassField>
<ObjectClassField name="Inspected
By">Wingenbach</ObjectClassField>
<ObjectClassField name="Repairs Made">N</ObjectClassField>
<ObjectClassField name="Valve Position Found" />
<ObjectClassField name="Valve Position Left" />
<ObjectClassField name="Notes" />
</ObjectClassRow>
</ObjectClassRows>
</ObjectClass>
</GeodatabaseRelationships>
</ReportObject>
</ReportDefinition>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








