我正在寻找对绑定执行复杂计算的可能性。给出以下实例:
<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
我的问题是我不知道将这些计算“放到哪里”。如您所见,我们需要一个带有变量的循环,该变量可以在循环之间存储一些信息。因此,我评估了以下选项:
xforms:variable与xforms:repeat =>结合使用xforms:variable在重复中无法写入“外部”范围
xforms:setvalue与包含临时变量和xforms:repeat的额外实例的组合
xforms:与calculate attribute =>绑定,可以在xpath中进行循环,但是没有变量
有什么建议如何解决这个问题?谢谢!
最佳答案
如果约会节点集已更改,则可以尝试使用触发的Javascript实现计算。如果您使用的是Orbeon表单,则可以使用xxforms:script
扩展名。 Orbeon Wiki的example how to set an instance value based on a javascript calculation。
另一个解决方案是完全“外部化”计算并创建一个小的Web服务(XQuery?),该服务将返回计算结果。您可以使用xforms:submit
机制来提供该服务并访问其结果。
关于xquery - XForms:绑定(bind)的复杂计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9329012/