问题描述
我有一个HTTP服务,该服务返回JSON响应,Orbeon会将其转换为XML,如下所示:
<json type="object">
<data type="object">
<timeSlots type="array">
<_ type="object">
<label>9:00AM to 9:30AM</label>
<value>1</value>
</_>
<_ type="object">
<label>10:00AM to 10:30AM</label>
<value>2</value>
</_>
</timeSlots>
</data>
<is_success type="boolean">true</is_success>
</json>
我已经建立了一个Orbeon“操作”,该操作使用名为“时间段”的“保存到数据集”:
Screen shot showing Save to Dataset
但是,我不知道如何计算控件中的数据集。我尝试将以下内容添加到控件的计算值中:
count(fr:dataset('time-slots')/json/data/timeSlots/_)
和
count(fr:dataset('time-slots')/json/data/timeSlots)
我不知道语法。任何提示或想法将不胜感激!
解决方法
fr:dataset()
function返回根元素而不是文档节点,就像doc()
一样,因此您需要跳过XPath中的json
。如果您要根据引用的XML计算时隙数,则应采用以下方法:
count(fr:dataset('time-slots')/data/timeSlots/_)