我正在尝试将xs:double转换为带有函数的xPath 2.0中的xs:integer(我不想使用XSLT)。
number(//version//number/text())
以上输出为 - 6.0(数字为6.0)。我该如何将其转换为6?
答案 0 :(得分:9)
XPath 2.0包含内置XML Schema类型的构造函数,因此您可以这样做:
xs:integer(number(//version//number/text()))
见https://www.w3.org/TR/xpath-functions/#constructor-functions-for-xsd-types。我不知道你的环境是什么,但是在我的XML IDE中没有任何特殊的命名空间配置。您的里程可能会有所不同,在这种情况下,您需要找到如何将 XML Schema 命名空间绑定到您环境中的xs:
前缀。
顺便说一句,由于您使用的//
表达式可以返回多个元素,因此使用//version
索引//number
和[1]
可能更安全,以防您只预计出现一次:(//version[1]//number)[1]
。
答案 1 :(得分:1)
您可以使用floor
,然后构建xs:integer
:xs:integer(floor(//version//number))
。