Я получаю это от 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, я думаю, что тот факт, что когда я запускаю эти тесты и значение является строкой, выдает ошибку типа выше.
Но самое главное, есть ли хороший способ проверить тип значения параметра?
ОБНОВЛЕНИЕ: полный * XSL-скрипт на GitHub