В XForms, как сделать все поля доступными только для чтения, кроме нескольких полей? - PullRequest
2 голосов
/ 10 ноября 2011

Я сделал следующее, чтобы сделать полную страницу доступной только для чтения, используя Создание всего экземпляра только для чтения :

<xforms:instance>
    <form>
        ...
    </form>
</xforms:instance>
<xforms:bind ref="instance('form-name')" readonly="true()"/>

Но у меня есть требование включить только несколько полей. Я пробовал такой код, который был задан для Несколько привязок на данном узле , но был для свойства "требуется". Так что это не удается.

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

Итак, есть ли возможность переопределить глобальные настройки только для чтения для экземпляра формы только для нескольких узлов?

1 Ответ

3 голосов
/ 11 ноября 2011

Как вы заметили, связывание с readonly="false()" не действует, так как это значение по умолчанию, и оно не отменяет другое связывание, говоря, что этот узел доступен только для чтения, в соответствии с правилами, регулирующими множественные привязки для данногоузел .

Однако вы можете написать одну привязку, которая сделает все листовые элементы в вашем экземпляре (т.е. элементы, которые не содержат никаких других элементов: //*[empty(*)]) доступными только для чтения, кроме определенныхэлементы.Например:

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