0

我在某个函数的某个部分有问题,导致我出现错误

XSLT2 Transformation failed: Error in XPath 2.0 expression (Too many items - fn:string)

这是生成错误的代码行:

<xsl:for-each select="(fn:doc($cwklic_codeMappings3)/ns0:KLCodeTable)[(fn:string(ns0:codeType/@name) = 'IFTdep')]">

这是该代码的整个区域。

<xsl:variable name="var93_resultof_map" as="node()?">
    <xsl:for-each select="(fn:doc($cwklic_codeMappings3)/ns0:KLCodeTable)[(fn:string(ns0:codeType/@name) = 'IFTdep')]">
    <xsl:variable name="var92_resultof_first" as="node()" select="ns0:codeType"/>
        <codeType xmlns="http://www.kewill.com/logistics/klic/conversion">
        <xsl:sequence select="($var92_resultof_first/@node(), $var92_resultof_first/node())"/>
    </codeType>
    </xsl:for-each>
</xsl:variable>

这是一个图形映射屏幕截图。

在此处输入图像描述

我希望任何人都可以帮助我。

4

1 回答 1

1

大概这意味着 KLCodeTable 可以有多个 codeType,这意味着 string() 的参数包含多个属性节点。

如果您希望您的谓词在任何代码类型具有所需值的情况下评估为真,只需放弃对 string() 的调用,即 write [ns0:codeType/@name = 'IFTdep']

如果你的意思是别的,那么你最好告诉我们你的意思......

顺便说一句,在 XSLT 中的函数调用中,fn: 前缀是完全不需要的。如果您的生产力是通过代码的长度来衡量的,那么一定要使用它,否则就是浪费空间。

于 2013-04-29T12:13:35.590 回答