Bonjour,

J'ai un script xsl qui marche bien avec un JDK 1.4 et qui ne marche plus en JDK 1.5. (Je suis un peu perdu dans les versions du moteur de transformation).

Pour cerner le problème, je l'ai reproduit sur un petit exemple.

Voici mon document XML :

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
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd year="1985">
    <title>CD number 1</title>
  </cd>
  <cd year="2006">
    <title>CD number 2</title>
  </cd>
  <cd year="1985">
    <title>CD number 3</title>
  </cd>
  <cd year="2000">
    <title>CD number 4</title>
  </cd>
</catalog>
Voici mon script XSL (qui utilise la "méthode MUENCH") :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
 
<xsl:key name="y" match="@year" use="."/>  
 
<xsl:template match="/"> 
 
    <xsl:for-each select="//cd/@year[generate-id(.)=generate-id(key('y', .)[1])]"> 
      <xsl:sort select="." data-type="number"/>
      year:<xsl:value-of select='.'/>
   </xsl:for-each> 
 
</xsl:template> 
 
</xsl:stylesheet>
J'ai aussi un script ant pour faire le travail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<project name="report" default="report" basedir=".">
<target name="report">
  <echo message="xslt" />
    <xslt in="catalog.xml" 
          out="report.html"
          style="transfo.xsl"
          force="yes">
    </xslt>
</target>
</project>
Avec un JDK 1.4 j'obtiens bien :
<?xml version="1.0" encoding="UTF-8"?>

year:1985
year:2000
year:2006
Mais en java 5 :
<?xml version="1.0" encoding="UTF-8"?>
Quelqu'un sait-il pourquoi cette différence ? Comment corriger pour que ça marche dans mes deux environnements ? Et quelle version de moteur j'utilise ?

Merci beaucoup
Bernard