Как проверить, существует ли экземпляр в xforms?

Я хочу отправить действие, только если существует экземпляр addressDetails (поскольку экземпляр загружается в подчиненную форму).

Я попытался использовать атрибут «if» для xf: action следующим образом, но не сработал:

<xf:action ev:event="save" if="instance('addressDetails') != ''">

Я получил сообщение об ошибке «Ошибка оценки экземпляра выражения XPath ('addressDetails')».

Есть ли способ проверить, существует ли экземпляр?


person Crusaderpyro    schedule 06.10.2016    source источник


Ответы (1)


В XPath 2.0 просто напишите:

exists(instance('addressDetails'))

Или вы могли бы написать:

count(instance('addressDetails')) > 0
person ebruchez    schedule 06.10.2016
comment
Неа. Ни существует, ни количество не работало. Для существующих он выдал ошибку, что существующий не определен, а для подсчета ему не удалось оценить выражение XPath. - person Crusaderpyro; 07.10.2016
comment
На данный момент (временный обходной путь) я создал еще один экземпляр, который находится в основной форме (а не в подчиненной форме) и значение которого принимает логическое значение. При загрузке страницы это ложь. Как только подчиненная форма загружена, я просто проверяю, является ли это значение экземпляра «истинным». - person Crusaderpyro; 07.10.2016
comment
count() должен работать даже с XPath 1.0. Возможно, ошибка для сообщения XSLTForms (если я прав, что вы используете XSLTForms). Но приятно знать, что у вас есть обходной путь. - person ebruchez; 07.10.2016