如何计算Orbeon表单中的数据集?

问题描述

我有一个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/_)