2010-05-28 3 views
1

Je viens de travailler sur une ancienne application Java et j'ai changé le jre de 1.5 à 1.6. L'application utilise xsl pour transformer xml en html et cela a bien fonctionné jusqu'à ce que j'ai changé le jre.Java/XSL: résultat de transformation différent entre jre 1.5 et jre 1.6

Voici un extrait du xsl et xml:

XML

<link href="Uml&amp;#228;ut.txt" target="_blank"> 
    <style tag="text">Umläut.txt</style> 
</link> 

XSL

<xsl:template match="link"> 
    <xsl:element name="td"> 
     <xsl:element name="a"> 
      <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> 
      <xsl:attribute name="target"><xsl:value-of select="@target"/></xsl:attribute> 
      <xsl:apply-templates/> 
     </xsl:element> 
    </xsl:element> 
</xsl:template> 

Le résultat en utilisant jre 1.5 ressemble à ceci

<td><a href="Uml&#228;ut.txt" target="_blank"> 
    <text>Uml&auml;ut.txt</text> 
</a></td> 

Le résultat avec jre 1. 6

<td><a href="Uml&amp;#228;ut.txt" target="_blank"> 
    <text>Uml&auml;ut.txt</text> 
</a></td> 

Quelqu'un peut-il expliquer ce qui s'est mal passé ici? Pourquoi 1.5 convertit &amp; en & et 1.6 pas? Que puis-je faire pour corriger cela?

+0

Quel processeur XSLT utilisez-vous? Je ne pensais pas que Java en avait un intégré (bien que je n'utilise pas souvent XSLT en Java). – jasonmp85

+0

Le standard. XALAN Je pense mais je ne connais pas le numéro de version – paul

Répondre

3

La sortie que vous obtenez maintenant avec jre 1.6 est correcte.

Il se peut qu'il y ait eu un bogue dans la version antérieure de XALAN qui a été corrigé dans la version incluse dans Java 1.6.

En regardant le XML d'entrée, si l'intention était d'avoir une référence d'entité pour ä, alors il devrait être &#228;, pas &amp;#228 (qui est juste une référence d'entité pour & suivi de la chaîne #228;, pas une entité référence pour ().

Questions connexes