我只是在将 ASP.Net 1.1 应用程序升级到 .Net 3.5 的过程中,我所做的更改之一是使用 XslCompiledTransform 而不是 XslTransform。当我发现使用新方法失败的 XSLT 时,我正在运行一些测试 XSLT 以确保一切正常。
经过一番调查,我发现 XSLT 有一个带有 435 个条件的巨大 xsl:choose 语句,示例如下:-
<xsl:choose>
<xsl:when test=".='0'">Not Applicable</xsl:when>
<xsl:when test=".='A01'">Hartlepool</xsl:when>
<xsl:when test=".='A02'">North Tees</xsl:when>
....为了理智而缩写......
<xsl:when test=".='ZE0'">Eastern Board</xsl:when>
<xsl:when test=".='ZN0'">Northern Board</xsl:when>
<xsl:when test=".='ZS0'">Southern Board</xsl:when>
<xsl:when test=".='ZW0'">Western Board</xsl:when>
<xsl:otherwise>N/A</xsl:otherwise>
</xsl:choose>
注释掉上面的 xsl:choose 允许转换工作,但是将其保留在当前正在使我的 IIS 应用程序池崩溃,唯一的解决方案是重新启动应用程序池。
由于各种原因,我意识到 435 条件选择语句不是一个好主意(我继承了这段代码,请不要对我不利),我将考虑以另一种方式解决这个特定问题,但是我对为什么以前使用 XslTransform 有效但不适用于 XslCompiledTransform 感兴趣。有什么特别需要我注意的吗,或者这个非常大的选择声明只是一个选项。