代码之家  ›  专栏  ›  技术社区  ›  paul

Java/XSL:JRE 1.5和JRE 1.6之间的转换结果不同

  •  1
  • paul  · 技术社区  · 16 年前

    我刚刚开发了一个旧的Java应用程序,把JRE从1.5切换到1.6。该应用程序使用XSL将XML转换为HTML,在我更改JRE之前,它一直运行良好。

    以下是XSL和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>
    

    使用JRE1.5的结果如下

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

    JRE 1.6的结果

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

    有人能解释一下这里出了什么问题吗?为什么1.5转换 &amp; & 1.6不是吗?我能做些什么来纠正这个问题?

    1 回复  |  直到 16 年前
        1
  •  3
  •   Mads Hansen    16 年前

    现在使用JRE 1.6得到的输出是正确的。

    可能是在早期版本的Xalon中有一个bug,它已经在Java 1.6中包含的版本中被纠正了。

    查看输入XML,如果目的是为 γ ,那么应该是 &#228; 不是 &amp;#228 (这只是一个实体参考 & 后跟字符串 #228; ,不是的实体引用 γ )