Я пытаюсь преобразовать XML-файл в формат Json с использованием XSLT версии 1.0, я нахожусь в случае, когда у меня есть потенциальное количество замен, используя метод Replace на XSL. Это создает исключение StackOverFlowException.XSLT 1.0 потенциальное количество замен с помощью метода REPLACE создает исключение StackOverFlow
Метод Replace называется рекурсивно, поэтому у меня была эта проблема. Есть ли решение решить эту проблему?
<xsl:template name="replace-string">
<xsl:param name="text"/>
<xsl:param name="replace"/>
<xsl:param name="with"/>
<xsl:choose>
<xsl:when test="contains($text,$replace)">
<xsl:value-of select="substring-before($text,$replace)"/>
<xsl:value-of select="$with"/>
<xsl:call-template name="replace-string">
<xsl:with-param name="text" select="substring-after($text,$replace)"/>
<xsl:with-param name="replace" select="$replace"/>
<xsl:with-param name="with" select="$with"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Какой процессор XSLT 1.0 вы используете? –
Я не использую специальный процессор XSLT 1.0, новичок в XSLT –
Запустите http://home.arcor.de/martin.honnen/xslt/processorTest2.xml через процессор и сообщите нам результаты. Или перейдите к XSLT 2.0, как это предусмотрено Saxon 9, Altova или XmlPrime. –