Saxonica EE Xslt 转换处理无限循环

Saxonica EE Xslt tranformation handling infinte loop

我在 java 应用程序中使用 saxonica EE(试用版)进行 xslt 转换,在使用 XSLT 转换负载时需要处理无限循环的帮助。我们是否可以为转换配置任何超时,以便如果它进入无限循环,我们可以使请求超时并且它不应该关闭应用程序?

我读到无限循环不会导致 saxonica 解析器中的堆栈溢出,因此超时是停止转换并引发错误的更好选择。

与其他编程语言一样,限制程序使用的资源是执行框架的问题,而不是语言处理器本身的问题。例如,您可以在这里找到一些想法:https://www.baeldung.com/java-stop-execution-after-certain-time

这里:How to properly stop the Thread in Java?

但是,如果线程处于紧密 CPU 循环中,中断线程可能会出现问题。

在XSLT中构造一个无限循环实际上是相当困难的,它需要一些聪明才智。但是写一个非常长的有限时间的代码是很容易的,它只需要三四个嵌套的xsl:for-each 语句和一个大的源文件。

我认为,实际的答案是不要让未经测试的代码 运行 出现在生产环境中。始终先在 IDE 中对其进行测试。这就是为什么可以禁用 xsl:evaluate 的原因。