如何获得仅在字段非空时才测试的 Decimal 字段的验证公式

How can I have a validation formula for a Decimal field that is only tested if the field is non-blank

在 Form Builder 中,我可以控制数据类型:十进制。 Required 设置为 No。如果输入的值不是正值,我希望出现验证错误。但如果该字段为空,我不希望出现验证错误。我尝试了很多公式,例如:

xxf:is-blank(xs:string($control-2)) or $control-2 > 0
string-length(xs:string($control-2)) = 0 or $control-2 > 0

xxf:is-blank($control-2) or $control-2 > 0
string-length($control-2) = 0 or $control-2 > 0

如果该字段非空,我可以使用 xs:string() 将其转换为字符串,没有任何问题,但如果它为空,则此转换失败。是否有任何公式可以测试空白十进制值?

如果在 Form Builder 中将字段设置为非必填字段和 Decimal,则在 XForms 中,您将得到一个 type="xf:decimal"。然后,至于约束,只写 xxf:is-blank() or . > 0 似乎对我有用。我看到这几乎等同于您的第三个表达式,所以我可能遗漏了一些东西。如果是这样,请随时在评论中告诉我。

作为参考,这是我在 验证和警报 选项卡中的内容: