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

Convert xs:double to xs:integer in xPath 2.0

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

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

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

XPath 2.0 包含 built-in XML 模式类型的构造函数,因此您可以:

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

参见 https://www.w3.org/TR/xpath-functions/#constructor-functions-for-xsd-types。我不知道你的环境是什么,但这在我的 XML IDE 中没有任何特殊的命名空间配置。您的里程可能会有所不同,在这种情况下,您需要找到如何将 XML 架构 命名空间绑定到您环境中的 xs: 前缀。

顺便说一句,由于您使用的 // 表达式可以 return 多个元素,因此使用 [=15] 索引 //version//number 可能更安全=],如果您只希望出现一次:(//version[1]//number)[1].

你可以使用floor然后构造一个xs:integerxs:integer(floor(//version//number)).