XSLT映射取值报错UncheckedXPathException:无效浮点值求助
解决XSLT读取带‘/’字符串报浮点值无效的问题
这个报错的核心原因是XSLT尝试将包含‘/’的字符串MMTN2FE/A自动转换为浮点数值,而该字符串完全不是合法的浮点数,因此触发转换失败。以下是具体调整方案:
显式指定字符串类型取值:避免XSLT自动做类型推断,直接用
string()函数强制获取节点的字符串值,或者直接取节点的文本内容。示例:<!-- 正确写法:强制按字符串读取 --> <target-element> <xsl:value-of select="string(//your-source-node)"/> </target-element> <!-- 或直接取文本节点 --> <target-element> <xsl:value-of select="//your-source-node/text()"/> </target-element>移除强制数值转换的逻辑:检查你的XSLT代码,是否存在以下触发数值转换的场景:
- 使用了
number()函数处理该节点 - 在算术运算(如
+、-)或数值比较(如>、<)中直接引用该节点 - 给目标节点指定了数值类型的注解(如
as="xs:double")
把这些逻辑移除或修改为字符串处理,比如将数值比较改为非空判断string-length(//your-source-node) > 0,将类型注解改为as="xs:string"。
- 使用了
调试确认类型问题:如果不确定哪里触发了转换,可以用
xsl:message输出节点的类型信息,定位问题点:<xsl:message>Source node type: <xsl:value-of select="data-type(//your-source-node)"/></xsl:message>
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

