在xPath 2.0中将xs:double转换为xs:integer



我正在尝试用函数将xPath 2.0中的xs:double转换为xs:integer(我不想使用XSLT)。

number(//version//number/text())

以上输出为-6.0(取数字为6.0)。如何将其转换为6?

XPath2.0包含内置XMLSchema类型的构造函数,因此您可以执行以下操作:

xs:integer(number(//version//number/text()))

请参阅https://www.w3.org/TR/xpath-functions/#constructor-xsd类型的函数。我不知道您的环境是什么,但这在我的XMLIDE中没有任何特殊的命名空间配置的情况下就可以工作了。您的里程可能会有所不同,在这种情况下,您需要了解如何将XMLSchema命名空间绑定到环境中的xs:前缀。

顺便说一句,由于您使用的是可能返回多个元素的//表达式,因此用[1]索引//version//number可能更安全,以防您只期望出现一次:(//version[1]//number)[1]

您可以使用floor,然后构造一个xs:integer:xs:integer(floor(//version//number))

最新更新