java怎样在路径中加入变量,如何在需要路径调用的udf中设置变量的值

我正在尝试在XSLT中使用用户定义的函数,该函数重复调用某个字符串的值 . 该字符串基于XPath表达式的结果,该表达式在单个函数调用的范围内不会更改 . 我认为将它分配给变量而不是一遍又一遍地查找是一个好主意 .

不幸的是,至少在Saxon的实现中,你不能使用需要一个函数内部的节点的XPath表达式,即使是一个基于绝对路径的节点,而不是先使用抛弃线让函数知道你正在讨论根文档而不是另一个 .

因此,例如,以下代码引发错误:

通常,解决方案只是首先调用任何全局变量来提供上下文 . 例如,以下在udf内部工作($ root是用根节点标识的变量):

但是当尝试使用Xpath来修复变量的值时,这不起作用,因为我不允许将表达式放在for-each中 .

我也试过用

那也行不通 .

FWIW,将变量传递给函数是有问题的,因为用于定义“myleaf”的Xpath表达式取决于上下文节点,并且我不知道如何使Xpath基于当前上下文节点中的值调用一个路径 .

例如,在调用此函数的代码中,我有类似的东西:

我正在/ potato / stem [eye]节点的上下文中工作,并使用udf查找具有相同@sessionID值的/ potato / stem [scc]节点 . 我不知道如何从XPath谓词中的当前上下文节点引用@sessionID的值来搜索XML树中完全不同的部分中的其他节点,所以我使用了一个udf来做到这一点 . 它工作正常,直到我决定尝试使用变量作为字符串而不是让处理器每次都查找它 .

我试图避免更深层次(让我的函数本身调用一个命名模板或将一个命名模板放在我的原始for-each中并让该命名模板调用一个函数) .

所以我的问题是:

A.对于用户定义的函数,如何设置依赖于XPath表达式的变量?

B.在Xpath中是否有一种时髦的方法来使用从您尝试测试的Xpath表达式的谓词中的当前内容节点中提取的值?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值