Я использую Orbeon Forms CE версии orbeon-4.0.0.M11.201210030654-CE.
У меня была XForm (XHTML) с несколькими экземплярами, и я сделал привязку с required="true()" к одному из экземпляров и использовал xxforms-invalid и xxforms-valid для переключения случаев. Ниже приведены некоторые примеры кода из моего файла xform.
<xforms:instance id="teaching-load-instance" src="oxf:/apps/uis-common/model/uis-teaching-load-xforms-instance.xml"/>
<xforms:bind nodeset="instance('teaching-load-instance')/teaching_load">
<xforms:bind nodeset="module_id" required="true()"/>
</xforms:bind>
<xforms:action ev:event="xxforms-invalid" ev:observer="teaching-load-instance">
<xforms:toggle case="invalid-form-case"/>
</xforms:action>
<xforms:action ev:event="xxforms-valid" ev:observer="teaching-load-instance">
<xforms:toggle case="valid-form-case"/>
</xforms:action>
При доступе к этой странице xform будет выдана ошибка stackoverflow.
Вот журналы отладки из файла orbeon.log.
2012-10-23 21:42:42,470 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "month-instance"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,470 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "verification-instance"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,470 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,470 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "modules-instance"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,471 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - end dispatching {time (ms): "1"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start dispatching {name: "xxforms-invalid", target: "teaching-load-instance"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start handler {name: "xxforms-invalid", phase: "target", observer: "teaching-load-instance"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:action"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:toggle"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start dispatching {name: "xforms-revalidate", target: "xf-2"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,471 DEBUG XFormsServer - validation - start performing revalidate {model id: "xf-2"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "triggers-instance"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,471 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,471 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "parameters-instance"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end dispatching {time (ms): "1"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "check-user-instance"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "main"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "temp"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "session"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,472 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "status-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end dispatching {time (ms): "1"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "month-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "verification-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "modules-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start dispatching {name: "xxforms-invalid", target: "teaching-load-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - start handler {name: "xxforms-invalid", phase: "target", observer: "teaching-load-instance"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:action"}
2012-10-23 21:42:42,473 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:toggle"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start dispatching {name: "xforms-revalidate", target: "xf-2"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,474 DEBUG XFormsServer - validation - start performing revalidate {model id: "xf-2"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "triggers-instance"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,474 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "parameters-instance"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,474 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "check-user-instance"}
2012-10-23 21:42:42,474 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,474 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end dispatching {time (ms): "1"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "main"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "temp"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "session"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "status-instance"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,475 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "month-instance"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end dispatching {time (ms): "1"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "verification-instance"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "modules-instance"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start dispatching {name: "xxforms-invalid", target: "teaching-load-instance"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - start handler {name: "xxforms-invalid", phase: "target", observer: "teaching-load-instance"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:action"}
2012-10-23 21:42:42,476 DEBUG XFormsServer - interpreter - start executing {action name: "xforms:toggle"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start dispatching {name: "xforms-revalidate", target: "xf-2"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,477 DEBUG XFormsServer - validation - start performing revalidate {model id: "xf-2"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "triggers-instance"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,477 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - end dispatching {time (ms): "0"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start dispatching {name: "xxforms-valid", target: "parameters-instance"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - start performing default action {}
2012-10-23 21:42:42,477 DEBUG XFormsServer - end performing default action {time (ms): "0"}
2012-10-23 21:42:42,477 DEBUG XFormsServer - end dispatching {time (ms): "0"}