Java / XSL: результат преобразования отличается между jre 1.5 и jre 1.6 - PullRequest
1 голос
/ 28 мая 2010

Я только что работал над старым 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>

1008 * 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 Ответ

3 голосов
/ 28 мая 2010

Вывод, который вы сейчас получаете с помощью jre 1.6, верен.

Возможно, в более ранней версии XALAN произошла ошибка, которая была исправлена ​​в версии, включенной в Java 1.6.

Глядя на входной XML, если намерение состояло в том, чтобы иметь ссылку на сущность для ä , то она должна быть &#228;, а не &amp;#228 (которая является просто ссылкой на сущность для & сопровождаемый строкой #228;, а не ссылкой на сущность для ä ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...