在 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:integer
:xs:integer(floor(//version//number))
.
我正在尝试使用函数将 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:integer
:xs:integer(floor(//version//number))
.