我正在寻找为绑定执行复杂计算的可能性。给出以下实例:
<root>
<appointments>
<appointment><date>2012-01-01</date></appointment>
<appointment><date>2012-01-03</date></appointment>
</appointments>
<weeks />
</root>
weeks
节点取决于appointment
节点:
$weeks = 0
$week_begin = xs:date("1970-01-01")
for $appointment in //appointments/appoinment
if # Check if $appointment is in new week
$weeks = $weeks + 1
$week_begin = # Do some more calculationx
我的问题是我不知道在哪里“放”那些计算。如您所见,我们需要一个带有变量的循环,这些变量可以在循环周期之间存储一些信息因此,我评估了以下选项:
有任何建议如何解决这个问题?谢谢!
答案 0 :(得分:2)
如果约会节点集已更改,您可以尝试在Javascript中实现计算。如果您使用的是Orbeon Forms,则可以使用xxforms:script
扩展名。 Orbeon wiki有一个example how to set an instance value based on a javascript calculation。
另一个解决方案是完全“外部化”计算并创建一个可以返回计算结果的小型Web服务(XQuery?)。您可以使用xforms:submit
机制来提供该服务并访问其结果。