Bonjour à tous,
J'ai un XML de la forme suivante :
afin de regrouper les chambres par code Session et par type d'occupation (nombre adultes, nombre d'enfants) ,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <xml> <Rooms> <Room Quantity="1"> <Codes> <Code Value="D01" Role="Reference"/> <Code Role="Session" Value="H5"/> </Codes> <Travellers> <Traveller Ref="T1"/> <Traveller Ref="T2"/> </Travellers> </Room> <Room Quantity="1"> <Codes> <Code Value="D02" Role="Reference"/> <Code Role="Session" Value="H5"/> </Codes> <Traveller Ref="T3"/> </Room> <Room Quantity="1"> <Codes> <Code Value="D02" Role="Reference"/> <Code Role="Session" Value="H5"/> </Codes> <Traveller Ref="T4"/> </Room> </Rooms> <Travellers> <Traveller Type="Adult" ID="T1" BirthDate="1970-11-12"/> <Traveller Type="Adult" ID="T2" BirthDate="1975-12-30"/> <Traveller Type="Adult" ID="T3" BirthDate="1971-02-12"/> <Traveller Type="Adult" ID="T4" BirthDate="1983-07-10"/> </Travellers> </xml>
étant donné la variable key qui sera utilisé dans le calcul du nombre des voyageur par type:
j'utlise la variable key suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<xsl:key name="IDTraveller" match="/xml/Travellers/Traveller" use="@ID"/>
la transformation en utilisant Oxygen (xsltproc) fonctionne très bien et j'obtiens le rsultat souhaité. Mon problème est que cette transformation ne marche pas avec Dotnet et ça me retourne une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <xsl:key name="ticket" match="/xml/Rooms/Room" use="concat(Code[@Role='Session']/@Value,'_',count((Travellers|.)/Traveller[key('IDTraveller',@Ref)[not(@Type='Child') and not(@Type='Infant')]]),'_',count((Travellers|.)/Traveller[key('IDTraveller',@Ref)[@Type='Child' or @Type='Infant']]))"/>
La fonction 'key()' ne peut pas être utilisée dans les attributs 'use' et 'match' de l'élément 'xsl:key'
pouvez vous svp m'aider soit à faire fonctionner cette transformation via Dotnet soit me proposer une autre solution pour faire ce regroupement.
Merci d'avance.
Partager