gpt4 book ai didi

xslt - XSL 中的测试参数值类型

转载 作者:行者123 更新时间:2023-12-03 15:52:24 24 4
gpt4 key购买 nike

我从 LibXSLT 得到这个:

XSLTProcessor::transformToXml(): Invalid type
XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 1 objects left on the stack.

我正在传递一个 param,它可以有一个字符串值或一个节点集。我正在尝试测试它是否包含某个子字符串,在这种情况下将该值分配给另一个参数。

调用模板:

<xsl:call-template name="img">
<xsl:with-param name="upload" select="'url.com/image.jpg'"/>
<xsl:with-param name="w" select="200"/>
<xsl:with-param name="h" select="200"/>
</xsl:call-template>

调用的模板:

<xsl:template name="img" match="*" mode="w">
<xsl:param name="upload" select="."/>

<xsl:param name="JITexternal">
<xsl:choose>
<xsl:when test="
not($upload/meta) and (contains($upload, '.jpg')
or
contains($upload, '.png'))
">
<xsl:value-of select="$upload"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="0"/>
</xsl:otherwise>
</xsl:choose>
</xsl:param>
</xsl:template>

虽然我不确定是什么导致了 LibXSLT,但我认为当我运行这些测试并且值是一个字符串时,它会抛出上述类型错误。

但最重要的是,是否有测试参数值类型的好方法?

更新 full XSL script on GitHub

最佳答案

虽然不完全是类型检查,但我发现在运行测试之前将结果树片段转换为 string() 确实可以防止 LibXSLT 崩溃:

    <xsl:param name="JITexternal">
<xsl:choose>
<xsl:when test="starts-with(string($upload), 'http://')">
<xsl:value-of select="$upload"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="0"/>
</xsl:otherwise>
</xsl:choose>
</xsl:param>

关于xslt - XSL 中的测试参数值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5438887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com