xslt probleem

Status
Niet open voor verdere reacties.

xmlnewbie

Nieuwe gebruiker
Lid geworden
27 okt 2006
Berichten
1
ik ben bezig met een school opdracht.
Daarvoor moet ik een xml transformatie uitvoeren die uit een bestand met klant een klant order gegevens haalt.
In het XML bestand komt voor elk product de klantreferentie en het ordernr dat bij de order hoort voor.
ik wil graag dat in de transformatie de klant referentie en ordernr 1x voor komt en daar tussen alle artikelen onder elkaar.

Hoe neem ik bepaalde dingen maar 1x mee in de tranformatie?
hier onder een klein voorbeeldje van het xml bestand.

<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2006-10-26T19:06:27">
<uworder>
<referentieklant>20062345</referentieklant>
<Bestelnummer>20060126</Bestelnummer>
<Leverdatum>2006-10-12T00:00:00</Leverdatum>
<Artikelnummer>1</Artikelnummer>
<Aantal_x0020_besteld>12</Aantal_x0020_besteld>
</uworder>
<uworder>
<referentieklant>20062345</referentieklant>
<Bestelnummer>20060126</Bestelnummer>
<Leverdatum>2006-10-12T00:00:00</Leverdatum>
<Artikelnummer>2</Artikelnummer>
<Aantal_x0020_besteld>15</Aantal_x0020_besteld>
</uworder>
<uworder>
<referentieklant>20062345</referentieklant>
<Bestelnummer>20060126</Bestelnummer>
<Leverdatum>2006-10-12T00:00:00</Leverdatum>
<Artikelnummer>5</Artikelnummer>
<Aantal_x0020_besteld>10</Aantal_x0020_besteld>
</uworder>
</dataroot>
 
Wat je wil doen is een distinct selectie uit je data.
In sql bijvoorbeeld is dat zeer makkelijk; in xsl niet, aangezien de xpath syntax daar niet erg geschikt voor is; maar geen nood, het gaat wel.

Hier de xpath query die je nodig hebt:
//uworder[not(referentieklant = preceding-sibling::uworder/referentieklant)]/referentieklant

Je vraagt hierbij alle referenties van de klant, waarbij die referentie niet voorkomt in een voorgaande order in de xml; met andere woorden: een distinct selectie van klantenreferenties

Om het dan verder op te lossen, kan je bovenstaande in een for-each lus stoppen; en binnen die lus alle artikels opvragen voor die bepaalde klantreferentie...

Daar zal je mee scoren op school.

Veel succes,
Tomas
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan