In the previous article, I showed you how to manage user input in the XForms model. I discussed the process of submitting an XForm and – more importantly - validating user input prior to submission using built-in XML Schema support. In this concluding article, find out how to use the <xforms:bind> element to perform calculations on form input values, integrate XPath expressions into your XForms model and get a crash course in the XForms event model.
Of course, the "required" attribute is just one example of what XForms calls "model item properties." Another one is the "relevant" attribute, which specifies when a particular element of the instance data is enabled or disabled. Consider the following example:
Basically, this says that when performing a transaction (in this case, a bank account transaction which is either a deposit or a withdrawal) the check number is only relevant when the transaction involves a check.
Of course, it's up to the implementation to decide how to handle this particular property. Some implementations might disable the field for data entry during cash transactions, others might hide it, and still others might pop up a warning.
You'll notice, also, that the "relevant" property contains an equality test. Model item properties can contain comparison tests, so long as these conform to the rules laid down for XPath expressions. Here's another example, this one illustrating the use of a comparison test with the previously-explained "required" property by requiring the entry of a tax identification number for transactions greater than $50,000: