2017-09-22 86 views
1

在窗体生成器中,我有一个数据类型的控制:十进制。必填项设置为否。如果输入的值不正确,我想要验证错误。但是如果字段为空,我不想验证错误。我已经尝试了很多公式,如这些:如何才能验证公式为十进制字段,只有测试如果该字段非空白

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:字符串()没有任何问题,但如果它是空白,则这个转换失败。是否有任何公式来测试空白十进制值?

回答

1

如果在Form Builder中将字段设置为非必需和Decimal,则在XForms中,您将拥有type="xf:decimal"。然后,至于约束,只写xxf:is-blank() or . > 0似乎为我工作。我发现这和你的第三个表达式非常相似,所以我可能会错过一些东西。如果是这样,请随时在评论中告诉我。

以供参考,这是我曾在验证和快讯标签:

Validations and Alerts

+0

显然XXF的行为:是空白()是从XXF的不同:是 - 空白(。)和xxf:空白($ control-2)。我不明白为什么会这样。但这似乎工作。谢谢。 – awilkinson

+0

作为一个方面说明,我认为我们应该能够通过从下拉列表中选择“Positive”而不是编写公式来解决此问题。不幸的是,即使当Required设置为No时,如果该字段为空,这将生成一条错误消息。我不认为它应该以这种方式工作。 – awilkinson

+0

在XML Schema中,有一个'xs:positiveInteger',但没有'xs:positiveDecimal',但我同意,在下拉列表中添加这个可能性会是一个很好的补充。我们将在内部讨论这个问题,并且看看为此提供RFE是否有意义。 – avernet

相关问题