“约束”和“必需”属性的XForms关系

时间:2012-04-11 11:29:25

标签: constraints orbeon xforms required

作为参考,最常见的问题是:https://stackoverflow.com/questions/8667849/making-xforms-enforce-the-constraint-and-type-model-item-properties-only-when-fi不同之处在于我无法使用“相关”属性,因为我希望该字段可见且可访问。

我正在尝试制作具有以下属性的XForms表单:

  1. 显示名为“information”的文本字段。 (例如)
  2. 此字段不得必需,因为可能无需输入数据。 (或者此数据将在以后输入。)
  3. 但是,如果在此字段中输入数据,则必须遵守指定的约束
  4. 我无法将该字段标记为相关,因为这会隐藏字段,并且可能需要在其中输入一些数据。
  5. 现在的麻烦是,即使字段中没有数据,仍然会强制执行约束(即使它没有标记为'required')。

    我已经看了XForms 1.1 specification,但它似乎没有描述属性'required'和'constraint'应该如何相互作用。

    我看到的唯一选项是在约束中添加一个部分,以便允许空值。 e.g:

      

    。 =''或< actual-constraint>

    但是,我不喜欢这个。感觉就像将解决方法添加到每个这样的领域。

    有没有其他方法可以表明非必填字段不需要匹配该字段的约束? (我错过了什么吗?)

1 个答案:

答案 0 :(得分:2)

在XForms 1.1中,required有两个目的:

  1. 根据需要标记字段(实现可以设置控件样式以反映此情况,例如使用“*”)
  2. 参与验证过程
  3. 后者在4.3.3 The xforms-revalidate Event中描述。

      

    当且仅当满足以下条件时,实例节点才有效:

    其中一个条件是:

      

    如果所需的模型项属性为true,则该值为非空

    因此,在影响验证的所有方面之间存在逻辑and

    我可以看到事情可能会有所不同,例如:说required="false()"可以禁用其余的验证。然而,这不是XForms采用的方法。

    基于此,作为约束的一部分,检查空虚是没有错的。

    XForms 2.0可能会添加自定义XPath函数,这可能有助于重用逻辑:

    <bind ref="information" constraint="my:constraint(.)">
    

    此外,如果约束可以用类型表示,您可以使用schema types in the XForms namespace中的一个,它允许空值有效。例如,xforms:double认为空字符串和42是有效值,而不是gaga