[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Group by Element based on Attribute inside container

Subject: Group by Element based on Attribute inside container using 1.0
From: "Friend, Darris E" <FRIENDDE@xxxxxxx>
Date: Thu, 6 Nov 2008 12:35:36 -0500
 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>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.