2017-09-22 36 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

相關問題