libxml:"Stack usage error" - 更多信息?



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

您似乎正在使用lxml扩展函数。在这种情况下,当值从 XPath 堆栈中弹出并且堆栈为空时,会发生"堆栈使用错误"(XPATH_STACK_ERROR内部错误)。典型方案是调用的扩展函数,其参数少于预期。

根据@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>

相关内容

  • 没有找到相关文章

最新更新