で私はlibxsltのからこれを取得しています:テストのparam値の型XSL
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のトリッピングされるかわからないのですが、私はこれらのテストと値を実行することを事実だと思います上記の型エラーをスローする文字列です。
最も重要なのはですが、パラメータの値の型をテストする良い方法はありますか?
UPDATE:正確に型チェックされていないが、私は私のテストを実行する前string()
に結果ツリーフラグメントを変換すると、アウト爆撃するlibxsltのを防ぐことがわかっfull XSL script on GitHub
はあなたをしていますXSLT 1または2を使用していますか? – Ross
私はLibXSLT 1.1.26-6を使用しています。 – tmslnz
@tmslnz:渡すデータ型を知っている必要があります。 XSLT/XPath 1.0には型チェックのようなものはありません。これはXSLT/XPath 2.0で行うことができますが、理由は主にスキーマ意識であり、あなたがしようとしているものではありません。 –