0

Stack usage error来自 libxml2/libxslt/lxml的原因是什么?

4

2 回答 2

1

看来您正在使用lxml扩展功能。在这种情况下,XPATH_STACK_ERROR当从 XPath 堆栈中弹出一个值并且堆栈为空时,会发生“堆栈使用错误”(内部)。典型的场景是使用比预期更少的参数调用的扩展函数。

于 2013-11-15T17:38:31.837 回答
0

根据@nwellnhof 的回答,这源于一个扩展函数已注册并调用的参数少于预期的事实。

就我而言,这是因为我传递了一个节点的内容,在某些情况下该节点是空的。以前这很好,但是我的工具链中的某些内容发生了变化并开始引发此错误。

我的原始代码看起来像:

<xsl:template match="foo">
  <xsl:value-of select="my:func(.)" />
</xsl:template>

foo为空时,会引发“堆栈使用错误”,通常与“未注册函数”错误组合在一起。简单的解决方法是仅在 中有内容时匹配foo,例如:

<xsl:template match="foo[./*]">
  <xsl:value-of select="my:func(.)" />
</xsl:template>
于 2013-11-18T15:26:50.820 回答