1、XForm灵活的客户端数据校验功能
数据验证一般包括三种类型:
完整性(Completeness):用户必须填充所有要求的字段。有时候,某个字段是否必须填充依赖于另一个字段的值。比如,只有当用户使用信用卡支付时才需要信用卡号。
数据类型(Data types): 数字必须是数字、日期必须是日期,依次类推。
合理性(Appropriateness):电话号码应该只包含数字,或者还可以包含与区号有关的短线和括号。邮政编码必须有 5 个数字组成,还可以带有短线和“加四”号码。
XForm提供Model中数据节点的类型绑定机制,如:
<xforms:model id=“payinfo“>
<xforms:submission action="http://www.example.com/orderform.php"
method="post"/>
<xforms:instance xmlns="">
<paymentinfo>
<method></method>
<cardtype></cardtype>
<cardnumber></cardnumber>
<expdate></expdate>
</paymentinfo>
</xforms:instance>
<xforms:bind ref="paymentinfo" type="ccnumber"/>
<xsd:schema>
<xsd:simpleType name="ccnumber">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{14,18}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</xforms:model>
2、强制输入
...
</xsd:schema>
<xforms:bind ref="paymentinfo/cardnumber"
required="true()"
type="ccnumber"/>
</xforms:model>
...
3、带条件的强制输入
如只有当用户选择信用卡支付时才要求输入信用卡号:
...
</xsd:schema>
<xforms:bind ref="paymentinfo/cardnumber"
relevant="paymentinfo/method = 'cc'"
required="true()"
type="ccnumber"/>
</xforms:model>
4、只读字段
如“单价”字段不允许修改
...
</order>
</xforms:instance>
<xforms:bind ref="order/soaps/item/unitprice"
readonly="true()"/>
</xforms:model>
...
5、计算字段
如“总价”=数量 * 单价:
...
</order>
</xforms:instance>
<xforms:bind ref="order/soaps/item/unitprice" readOnly="true()"/>
<xforms:bind ref="order/soaps/item/totalprice"
calculate="../qty * ../unitprice"/>
</xforms:model>
...
6、bind元素的其它属性
constraint:该属性设置任意的约束。比如,开发人员可以限制某个节点比另一个小。
maxOccurs 和 minOccurs:这两个属性确定表单中可以出现多少个项。
p3ptype:该属性把一个节点绑定到用户私有工作文件中的信息。