#xpath #orbeon #xforms #xpath-2.0 #xsltforms
#xpath #orbeon #xforms #xpath-2.0 #xsltforms
Вопрос:
Я хочу отправить действие, только если экземпляр ‘AddressDetails’ существует (потому что экземпляр загружен в подчиненную форму).
Я попытался использовать атрибут ‘if’ xf: action следующим образом, но не сработал:
<xf:action ev:event="save" if="instance('addressDetails') != ''">
Я получил сообщение об ошибке «Ошибка при оценке экземпляра выражения XPath (‘AddressDetails’)».
Есть ли способ проверить, существует ли экземпляр?
Ответ №1:
С XPath 2.0 просто напишите:
exists(instance('addressDetails'))
Или вы могли бы написать:
count(instance('addressDetails')) > 0
Комментарии:
1. Нет. Ни exists, ни count не работали. Для exists он выдал ошибку, которая exists не определена, а для count не удалось вычислить выражение XPath.
2. На данный момент (временное решение) я создал другой экземпляр, который находится в основной форме (не подчиненной форме) и значение которого принимает логическое значение. При загрузке страницы значение false. После загрузки подчиненной формы я просто проверяю, является ли значение этого экземпляра «истинным».
3.
count()
должно работать даже с XPath 1.0. Возможно, ошибка для сообщения в XSLTForms (если я прав, что вы используете XSLTForms). Но хорошо знать, что у вас есть обходной путь.