我刚刚开始使用旧的Java应用程序并将jre从1.5切换到1.6。该应用程序使用xsl将xml转换为html,这一直工作正常,直到我更改了jre。
以下是xsl和xml的摘录:
XML
<link href="Uml&#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äut.txt" target="_blank">
<text>Umläut.txt</text>
</a></td>
结果为jre 1.6
<td><a href="Uml&#228;ut.txt" target="_blank">
<text>Umläut.txt</text>
</a></td>
有谁可以解释这里出了什么问题?为什么1.5将&
转换为&
而1.6不转换?我该怎么做才能纠正这个问题?
答案 0 :(得分:3)
您现在使用jre 1.6获得的输出是正确的。
可能是早期版本的XALAN中的错误已在Java 1.6中包含的版本中得到纠正。
查看输入XML,如果意图是ä的实体引用,那么它应该是ä
,而不是&#228
(这只是一个实体)引用&
后跟字符串#228;
,而不是ä的实体引用。