java - SAXON - XPath,使用节点和原始值解析变量
问题描述
我有一个评估案例,例如:
$asset eq 100 and $asset/name() eq 'p0:current_asset'
应该返回true()
,变量$asset
需要在同一评估中解析为原始值和节点值,我XPathVariableResolver
在评估运行时使用接口来解析变量。
TinyElementImpl
解析变量时返回
public Object resolveVariable(QName variableName)
没有解决问题,我使用的是 SAXON-HE 的 JAXP 实现。
有可能这样做吗?
解决方案
我们(Saxonica)还没有非常清楚地记录Object
我们的实现接受哪种类型的 JAXPresolveVariable()
方法,我正在修复它。返回任何NodeInfo
(因此包括 的实例TinyElementImpl
)应该可以正常工作。
如果您使用的是 Saxon-HE,则它不支持模式,因此元素的类型值将始终为untypedAtomic
,因此与整数进行比较是行不通的。尽管有些读者可能会感到困惑,但最简单的解决方法是将条件更改为+$asset eq 100
- 一元加运算符强制进行类型转换。
我也不会写$asset/name() eq 'p0:current_asset'
,因为它依赖于命名空间前缀。更好的是写$asset[self::p0:current-asset]
。
推荐阅读
- python - Gensim/word2vec 错误:嵌入层错误
- docker - 我可以使用任何命令在 tcp://localhost:2375 上公开“docker for windows”的守护进程吗?
- javascript - message.mentions.users.first().id 定义有问题
- dart - 来自 GestureDetector() 的 onTapDown 和其他回调被延迟
- sql - 比较 PostgreSQL 中的两个逗号分隔的列
- c - 错误:使用“designated_init”属性声明的“struct”中字段的位置初始化 [-Werror=designated-init]
- java - 根据 ADF 中的自定义 Pojo 列表在 af:table 上应用过滤器
- c# - 如何使用推送通知将来自 webapi 操作方法的返回消息显示到我的 Web 浏览器
- css - 使用断点创建新的引导类
- laravel-5.7 - DB::select() - 如何获取数组数组而不是集合数组