Bonjour,
Je dois migrer tout un soft depuis une machine 32 bits vers une 64bits.
Entre autres features, il y a des transformations XSL dans le lot. L'une d'entre elle est vraiment bizarre car elle ne donne pas le même résultat en 32bits ou en 64bits... C'est sans doute que la bibliotheque utilisée doit planter en 64bits sans faire de logs ou d'erreur.... Malheureusement je n'ai pas trop la main là dessus.
En désespoir de cause j'essaie de trouver un autre moyen d'effectuer la même opération, avec l'espoir que ça ne fera pas planter la transformation en 64bits cette fois.
Mais pour ça encore faut-il que je comprenne comment l'originale fonctionne :-) Et il y a dedans une ligne que je ne parviens pas à piger. Il s'agit du passage en gras:
Je sais ce que c'est censé faire: ranger les tags "Agent" par ordre de la valeur du sous-tag "HawkDomain", créant ainsi des sections "HawkDomain" où les "Agents" sont rangés par ordre alphabétique. C'est ce que ça fait sur le soft original en 32bit, mais en 64bit je me retrouve avec chacune des section répétée entièrement autant de fois qu'il y a d'agents dedans...
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 <xsl:key name="agents-by-domain" match="th:Agent" use="th:HawkDomain" /> <xsl:template match="th:Agents"> <xsl:for-each select="th:Agent[count(. | key('agents-by-domain', th:HawkDomain)[1]) = 1]"> <xsl:sort select="th:HawkDomain" /> (...) <xsl:for-each select="key('agents-by-domain', th:HawkDomain)"> <xsl:sort select="th:AgentName" /> (...) </xsl:for-each> </xsl:for-each> </xsl:template>
Visiblement c'est donc au niveau de la condition en gras que ça doit pèter. Il s'agit vraisemblablement d'une condition permettant une sélection unique (censée éviter, justement, le problème que j'ai) mais je ne parviens pas à la cmprendre. Quelqu'un peut-il me l'expliquer?
D'avance merci!!
Luthier
Partager