RE: [xsl] XSL Processing to avoid repetitions

Subject: RE: [xsl] XSL Processing to avoid repetitions
From: "Fabien Tillier" <f.tillier@xxxxxxxx>
Date: Wed, 16 Jun 2010 15:36:47 +0200
Andrew, You are probably right, I came to nowhere....
Thanks also to David for is nearly as fast answer :)

So, I have these data

<?xml version="1.0" encoding="UTF-8"?>
<Results>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-1</CODE>
    <NUMERO>110</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-1</CODE>
    <NUMERO>567</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-1</CODE>
    <NUMERO>936</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-2</CODE>
    <NUMERO>110</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-2</CODE>
    <NUMERO>567</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
    <CONTRACT>1000</CONTRACT>
    <CODE>1000-2</CODE>
    <NUMERO>936</NUMERO>
    <STATE>0</STATE>
  </Row>
  <Row>
</Results>

And I would like to reshape the data to get something clean (from CONTRACT,
CODE and NUMERO)
1000
	1000-1
		110
		567
		936
	1000-2
		110
		567
		936
1001
	1001-1
		150
^1001 contract is not shown here but can in the rest of the XML...

Thanks a lot in advance
PS: Fields are supposed to be ordered already....

-----Message d'origine-----
De : Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx]
Envoyi : mercredi 16 juin 2010 15:23
@ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Objet : Re: [xsl] XSL Processing to avoid repetitions

On 16 June 2010 14:15, Fabien Tillier <f.tillier@xxxxxxxx> wrote:
> Hi List.
> I was wondering if anyone could help me to filter out data in an XML
stream.
> (can be xslt 2.0...)
>
> For example, I have
> <xml>
>       <city>
>             <name>Paris</name>
>             <person>Paul</person>
>       </city>
>       <city>
>             <name>New-York</name>
>             <person>John</person>
>       </city>
>       <city>
>             <name>Paris</name>
>             <person>George</person>
>       </city>
> </xml>
>
> I would like to have an XSL template able to output something like (using
<OL> for example) Paris
>       Paul
>       George
> New-York
>       John

Use xsl:for-each-group to select <city> and group by <name>, and
within that use current-grouping-key() to get place and then for-each
over the current-group() to get each name.

> (please note that the real structure is more complicated, and the filter is
to be done on more than one level...)

...in which case its probably best to post a complete sample.


--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

Current Thread