XSL中出现Invalid XPath expression错误,如何解决?
解决XSL中的「Invalid XPath expression」错误:concat函数语法问题
先看看你触发报错的这段代码:
Unexpected token - "string($GPSCgPoint/@oID)'" select="concat( '2D QA=',format-number($GPSPointH/h:PointQuality/@CQPos,$dec3),' 1S QA=',format-number($GPSPointH/h:PointQuality/@CQHeight,$dec3),' Time='string($GPSCgPoint/@oID)' ')"
问题一眼就能看出来——是concat函数的参数写法犯了语法错误!你在'Time='之后直接硬接了string($GPSCgPoint/@oID),又直接跟了' ',这完全不符合XPath里concat函数的规则:concat要求每个要拼接的内容都是独立参数,必须用逗号分隔,不能把字符串引号和函数调用直接连在一起。
修正后的代码
select="concat( '2D QA=', format-number($GPSPointH/h:PointQuality/@CQPos, $dec3), ' 1S QA=', format-number($GPSPointH/h:PointQuality/@CQHeight, $dec3), 'Time=', string($GPSCgPoint/@oID), ' ' )"
关键修正说明:
- 把原来错误的
'Time='string($GPSCgPoint/@oID)' '拆成了三个独立参数:'Time='、string($GPSCgPoint/@oID)、' ',每个参数之间用逗号隔开 - 我还给代码加了适当空格,让参数结构更清晰,能帮你避免这类粗心的语法问题
修改后,XPath解析器就能正确识别concat的每个拼接项,「Invalid XPath expression」的错误自然就消失了。
内容的提问来源于stack exchange,提问作者Parth Shah
相关产品推荐
相关产品推荐

