Я только что обновил приложение ASP.Net 1.1 до .Net 3.5, и одно из изменений, которые я сделал, - это использование XslCompiledTransform, а не XslTransform. Я проверял некоторые тестовые XSLT, чтобы убедиться, что все было в порядке, когда я нашел XSLT, который не удался при использовании нового метода.
После небольшого исследования я обнаружил, что XSLT имел огромный оператор xsl: select с 435 условиями, пример ниже: -
<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. Есть ли что-то конкретное, на что мне нужно обратить внимание или это странно большое предложение выбора только один раз.