理解XForm——学习IBM DW的资料 (3)

发表于:2007-06-30来源:作者:点击数: 标签:
1、XForm灵活的客户端数据校验功能 数据验证一般包括三种类型: 完整性(Completeness):用户必须填充所有要求的字段。有时候,某个字段是否必须填充依赖于另一个字段的值。比如,只有当用户使用信用卡支付时才需要信用卡号。 数据类型(Data types): 数字
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="clearcase/" target="_blank" >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:该属性把一个节点绑定到用户私有工作文件中的信息。

原文转自:http://www.ltesting.net