在XForms中,除了少数几个字段外,如何只读取所有字段?

时间:2011-11-10 12:55:49

标签: orbeon xforms

我使用Making an Entire Instance Read-Only

完成了以下操作,使整页成为只读页面
<xforms:instance>
    <form>
        ...
    </form>
</xforms:instance>
<xforms:bind ref="instance('form-name')" readonly="true()"/>

但是我要求只启用几个字段。我尝试了为Multiple binds on a given node提供的代码,但是属性是“必需的”。所以这失败了。

<xforms:bind ref="instance('form-name')/some-node" readonly="false()"/>

那么,仅仅为几个节点覆盖表单实例的全局只读设置吗?

1 个答案:

答案 0 :(得分:3)

如您所述,与readonly="false()"的绑定无效,因为这是默认设置,并且根据管理multiple binds on a given node的规则,它不会覆盖另一个绑定,表示此节点是只读的。

但是,您可以编写一个绑定,使您实例中的所有叶元素(即不包含任何其他元素的元素://*[empty(*)])只读,但特定元素除外。例如:

<xforms:bind ref="//*[empty(*)] except (/some/node, /some/other/node, …)"
             readonly="true()"/>