[XSLT] Utilisation de xsl:key
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:
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:
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:
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 :
Citation:
<?xml version="1.0" encoding="UTF-8"?>
year:1985
year:2000
year:2006
Mais en java 5 :
Citation:
<?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