XSLT2转换失败

时间:2013-04-29 10:45:25

标签: xml xsd mapping altova map-force

我在函数的一部分中遇到问题

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>

这是一个图形映射截图。

enter image description here

我希望有人能帮助我。

1 个答案:

答案 0 :(得分:1)

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

如果您希望谓词在任何codeTypes具有所需值时评估为true,则只需将调用放在string()上,即写入[ns0:codeType/@name = 'IFTdep']

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

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