Ciao,
presupponendo tu voglia usare xslt per la trasformazione.
Per iniziare devi inserire tutti i tuoi elementi in un elemento padre altrimenti il tuo xml non è standard.
Per esempio inserisci i tuoi elementi dentro l'elemento padre totale
codice:
<totale>
<pippo>rosso</pippo>
<paperino>bianco</paperino>
<topolino>giallo</topolino>
</totale>
successivamente copia il seguente foglio di stile in un nuovo file, che per esempio puoi chiamare: "file.xsl"
codice:
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:element name="totale">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="totale/">
<xsl:copy select="totale">
<xsl:attribute name="id"><xsl:number value="number(position() div 2)"/></xsl:attribute>
</xsl:copy>
</xsl:template>
</xsl:transform>
Infine utilizza un processore xsl per associare i due file.
Io utilizzo xsltproc su linux (in ogni caso c'è il porting anche per windows a questo indirizzo: http://www.zlatkovic.com/libxml.en.html
ammesso che i nomi dei file siano:
file.xml (per il tuo xml)
file.xsl (per il tuo foglio di stile)
digita su una shell (su windows penso sia la stessa procedura in una finestra dos, comunque leggi la pagina al link sopra ci saranno tutte le informazioni)
codice:
xsltproc file.xsl file.xml
ti ritroverai un output come questo:
codice:
<?xml version="1.0"?>
<totale>
<pippo id="1"/>
<paperino id="2"/>
<topolino id="3"/>
</totale>
che era quello che volevi 
Saluti
Rosario