我在函数的一部分中遇到问题
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>
这是一个图形映射截图。
我希望有人能帮助我。
答案 0 :(得分:1)
据推测,这意味着KLCodeTable可以有多个codeType,这意味着string()的参数包含多个属性节点。
如果您希望谓词在任何codeTypes具有所需值时评估为true,则只需将调用放在string()上,即写入[ns0:codeType/@name = 'IFTdep']
。
如果你有别的意思,那么你最好告诉我们你的意思......
顺便说一句,在XSLT中的函数调用中,fn:前缀是非常不必要的。如果您的生产力是通过代码的长度来衡量的,那么请务必使用它,否则会浪费空间。