problème d'utilisation de xsl:key
Bonjour à tous,
J'ai un XML de la forme suivante :
Code:
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> |
afin de regrouper les chambres par code Session et par type d'occupation (nombre adultes, nombre d'enfants) ,
étant donné la variable key qui sera utilisé dans le calcul du nombre des voyageur par type:
Code:
1 2
|
<xsl:key name="IDTraveller" match="/xml/Travellers/Traveller" use="@ID"/> |
j'utlise la variable key suivante :
Code:
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 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 :
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.