Re: [xsl] Merge? Copy?

Subject: Re: [xsl] Merge? Copy?
From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx>
Date: Thu, 15 Jul 2004 21:01:05 -0700 (PDT)
This is a grouping problem, and can be solved using
Muenchian grouping -

<?xml version="1.0"?> 
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
 
<xsl:output method="xml" indent="yes" /> 

<xsl:key name="by-customer" match="Customer" use="@id"
/>
 
<xsl:template match="/Customers">
  <Customers>
    <xsl:for-each select="Customer[generate-id(.) =
generate-id(key('by-customer',@id)[1])]">
      <Customer id="{@id}">
        <Name>
          <xsl:value-of select="Name" />
        </Name> 
        <Address>
          <xsl:value-of select="Address" />
        </Address>
        <xsl:for-each select="key('by-customer',@id)">
          <Sales> 
	    <date>
	      <xsl:value-of select="Sales/date" />
	    </date> 
	    <amount>
	      <xsl:value-of select="Sales/amount" />
	    </amount> 
	  </Sales>
        </xsl:for-each>
      </Customer>
    </xsl:for-each>
  </Customers> 
</xsl:template>
  
</xsl:stylesheet>

Regards,
Mukul

--- sbz sbz <sbz@xxxxxxxxxxxxxxxxx> wrote:
> I have an XML file similiar to below.  In this
> example I need the Customer to appear only once, in
> the real file it may be there once or 20 times.  I
> need the Sales data do be copied up from any
> duplicate customer. 
> 
> I have thought about doing this using vbscript
> maybe, but would prefer XSL to do it.  I have looked
> at merge but that requires loading 2 xml docs in. 
> I'd also prefer not have a duplicate xml file ...
> the file will be over 600 megs so loading two would
> be intensive.   
> 
> Is this even possible? 
> Any tips would be appreciated.  Thank You. 
> 
> <Customers> 
> <Customer id="100"> 
> <Name></Name> 
> <Address></Address> 
> <Sales> 
> <date>August 1, 2004</date> 
> <amount>18</amount> 
> </Sales> 
> </Customer> 
> <Customer id="100"> 
> <Name></Name> 
> <Address></Address> 
> <Sales> 
> <date>August 10, 2004</date> 
> <amount>22</amount> 
> </Sales> 
> </Customer> 
> </Customers> 
> 
> Desired Result: 
> 
> <Customers> 
> <Customer id="100"> 
> <Name></Name> 
> <Address></Address> 
> <Sales> 
> <date>August 1, 2004</date> 
> <amount>18</amount> 
> </Sales> 
> <Sales> 
> <date>August 10, 2004</date> 
> <amount>22</amount> 
> </Sales> 
> </Customer> 
> </Customers> 



		
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 

Current Thread