我正在使用xforms:bind对年份字段进行字段验证。代码如下:
<xforms:bind nodeset="instance('application-instance')/academic/cert_ordinary/year" level="year-1" constraint="if (string-length(.) < 1 ) then . = . else . castable as xs:integer and string-length(.) = 4 "/>
,而UI代码如下:
<xforms:repeat ref="instance('application-instance')/academic/cert_as" id="cert-as-repeat">
<xforms:input ref="year" incremental="true" class="input_smaller">
<xforms:alert level="year-1">Must be 4 digit year!</xforms:alert>
</xforms:input>
</xforms:repeat>
验证工作正常,但问题是,当我添加多行数据时,如果我在年份中插入一些字符串然后将其更改为数字,则验证无效。
例如,在我把&#34; test&#34;对于3行年份,警报将显示在那里,但随后我将其更改为&#34; 2014&#34;,1行的警报仍将保留在那里并且不会消失。这是orbeon的错误吗?仅供我使用orbeon 4.2。
由于
答案 0 :(得分:0)
似乎我在if语句中犯了错误
constraint="if (string-length(.) < 1 ) then true() else . castable as xs:integer and string-length(.) = 4"
这是正确的if语句。
感谢