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

本文详细介绍了XForm在客户端数据验证的功能,包括完整性、数据类型和合理性验证。通过示例展示了如何使用XForm的bind元素进行类型绑定、强制输入、条件性输入要求、只读字段以及计算字段的设置,从而实现灵活的数据管理和交互控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:该属性设置任意的约束。比如,开发人员可以限制某个节点比另一个小。
  • maxOccursminOccurs:这两个属性确定表单中可以出现多少个项。
  • p3ptype:该属性把一个节点绑定到用户私有工作文件中的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值