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

时间:2010-05-28 07:31:14

标签: xslt java

我刚刚开始使用旧的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>

使用jre 1.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 个答案:

答案 0 :(得分:3)

您现在使用jre 1.6获得的输出是正确的。

可能是早期版本的XALAN中的错误已在Java 1.6中包含的版本中得到纠正。

查看输入XML,如果意图是ä的实体引用,那么它应该是&#228;,而不是&amp;#228(这只是一个实体)引用&后跟字符串#228;,而不是ä的实体引用。