26.12.2013 Views

Which takes precedence: XForms binds or XFDL options? - IBM

Which takes precedence: XForms binds or XFDL options? - IBM

Which takes precedence: XForms binds or XFDL options? - IBM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

®<br />

<strong>Which</strong> <strong>takes</strong> <strong>precedence</strong>: <strong>XF<strong>or</strong>ms</strong> <strong>binds</strong> <strong>or</strong> <strong>XFDL</strong> <strong>options</strong>?<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

This module describes how to determine whether <strong>XF<strong>or</strong>ms</strong> <strong>binds</strong> <strong>or</strong> <strong>XFDL</strong> <strong>options</strong> take<br />

<strong>precedence</strong> when w<strong>or</strong>king with a f<strong>or</strong>m object.<br />

Page 1 of 12


<strong>IBM</strong> Software Group<br />

Data and presentation layer<br />

<strong>XF<strong>or</strong>ms</strong><br />

Data<br />

Layer<br />

<strong>XFDL</strong><br />

Presentation<br />

Layer<br />

2<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

When discussing the relevance between <strong>XF<strong>or</strong>ms</strong> model item properties and <strong>XFDL</strong> <strong>options</strong>, it<br />

helps to think of them as data layer and presentation layer where <strong>XF<strong>or</strong>ms</strong> is the data layer and<br />

<strong>XFDL</strong> is the presentation layer.<br />

Page 2 of 12


Data layer<br />

<strong>IBM</strong> Software Group<br />

<strong>XF<strong>or</strong>ms</strong><br />

Data<br />

Layer<br />

<br />

3<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

In this xf<strong>or</strong>ms:bind the <strong>XF<strong>or</strong>ms</strong> data layer is locked by the "true()" value of the readonly model<br />

item property.<br />

Page 3 of 12


<strong>IBM</strong> Software Group<br />

Presentation layer<br />

<br />

<br />

FIELD1: Read/Write - [readonly MIP = true()],<br />

[readonly tag = off]<br />

<br />

off<br />

<br />

4<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

Setting the readonly option of the <strong>XFDL</strong> presentation layer to “off” does not override the<br />

<strong>XF<strong>or</strong>ms</strong> readonly model item property. The <strong>XFDL</strong> presentation layer cannot make changes to<br />

the <strong>XF<strong>or</strong>ms</strong> data layer.<br />

Page 4 of 12


<strong>IBM</strong> Software Group<br />

Example f<strong>or</strong>ms<br />

• Technote # 1255009<br />

• Example 1: readOnly.xfdl<br />

• Example 2: manadat<strong>or</strong>yOptionalPrecedence.xfdl<br />

• Example 3: hiddenVisiblePrecedence.xfdl<br />

• Example 4: nonRelevantExample.xfdl<br />

5<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

Example f<strong>or</strong>ms discussed here can be found in technote # 1255009 located at the listed link.<br />

•Example 1 - readOnly.xfdl<br />

•Example 2 – mandat<strong>or</strong>yOptionalPrecedence.xfdl<br />

•Example 3 – hiddenVisiblePrecedence.xfdl<br />

•Example 4 – NonRelevantExample.xfdl<br />

Page 5 of 12


<strong>IBM</strong> Software Group<br />

Example 1: readOnly.xfdl<br />

Data model<br />

<br />

test Info 1<br />

test Info 2<br />

test Info 3<br />

test Info 4<br />

test Info 5<br />

test Info 6<br />

<br />

test Info 1<br />

<br />

<br />

Nodeset bind<br />

<br />

6<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

To demonstrate readonly, you start with the data model of an <strong>XF<strong>or</strong>ms</strong> f<strong>or</strong>m. To create an<br />

indirect link between the field in the f<strong>or</strong>m and a data element in the <strong>XF<strong>or</strong>ms</strong> model, use a<br />

nodeset bind. Within the bind the readonly model item property (MIP) is set to 'true()'.<br />

Page 6 of 12


<strong>IBM</strong> Software Group<br />

Readonly field<br />

<br />

<br />

FIELD1: Read/Write - [readonly MIP = true()], [readonly tag =<br />

off]<br />

<br />

off<br />

<br />

7<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

In the f<strong>or</strong>m “FIELD1”, the readonly option is set to “off”. Because the model item property is set<br />

to “true()” within the <strong>XF<strong>or</strong>ms</strong> bind, the data layer is locked. Once the data layer is locked by the<br />

readonly model item property, the presentation layer <strong>XFDL</strong> field option cannot make changes<br />

to the data model.<br />

Page 7 of 12


<strong>IBM</strong> Software Group<br />

Solution f<strong>or</strong> readonly fields<br />

<br />

<br />

<br />

FIELD1: Read/Write - [readonly MIP = true()], [readonly tag =<br />

off]<br />

<br />

off // Remove readonly option<br />

<br />

8<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

Here Field1 appears to be duplicating the readonly option by setting the readonly option to “on”.<br />

Because the <strong>XF<strong>or</strong>ms</strong> bind has set the model item property to ”'true()”, this sets this item to<br />

readonly and locks the datalayer. The <strong>XFDL</strong> is disregarded because the data layer<br />

is now locked. When creating a f<strong>or</strong>m with <strong>XF<strong>or</strong>ms</strong> data driven principles in mind, the c<strong>or</strong>rect<br />

way to make the field readonly is to set the model item property to “readonly=true()” and<br />

remove the <strong>XFDL</strong> readonly option from the field. It is not necessary to use both. A rule of<br />

thumb is that when using <strong>XF<strong>or</strong>ms</strong>, you should use the xf<strong>or</strong>ms bind. And when using XFD, use<br />

the element <strong>options</strong>.<br />

Page 8 of 12


<strong>IBM</strong> Software Group<br />

Example 2: mandat<strong>or</strong>yOptionalPrecedence<br />

<br />

<br />

Field option:<br />

<br />

on<br />

<br />

9<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

By default the data layer <strong>XF<strong>or</strong>ms</strong> model item property (MIP) "required" is set to "false()", theref<strong>or</strong>e, stating<br />

required=false() is not necessary. Because the data layer MIP is "not required", the data layer is not locked.<br />

<br />

Opening the sample f<strong>or</strong>m and viewing "FIELD2", it appears that the <strong>XFDL</strong> presentation layer has overridden the<br />

data layer. The <strong>XFDL</strong> presentation layer cannot override the <strong>XF<strong>or</strong>ms</strong> model item property. Instead what happens<br />

is that, acc<strong>or</strong>ding to the <strong>XF<strong>or</strong>ms</strong> model, the data f<strong>or</strong> this field is not mandat<strong>or</strong>y. However, the <strong>XFDL</strong> mandat<strong>or</strong>y<br />

constraint changes the presentation indicating that the data is mandat<strong>or</strong>y.<br />

<br />

on<br />

<br />

In this example these properties are in direct conflict of each other. It is not a best practice to mix the <strong>XF<strong>or</strong>ms</strong><br />

model item property required and <strong>XFDL</strong> constraint mandat<strong>or</strong>y. Ideally the f<strong>or</strong>m creat<strong>or</strong> should use only the<br />

<strong>XF<strong>or</strong>ms</strong> model item property and remove the <strong>XFDL</strong> constraints from the field.<br />

Page 9 of 12


<strong>IBM</strong> Software Group<br />

Example 3: hiddenVisiblePrecedence.xfdl<br />

Presentation layer<br />

on //remove from the field presentation<br />

layer<br />

Data layer<br />

//set the<br />

relevant=“true”<br />

10<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

In the "hiddenVisiblePrecedence" example, the 'FIELD2' <strong>XFDL</strong> is set to “on” and<br />

appears to have overridden the data layer.<br />

on<br />

The model item property (MIP) relevant, by default, is set to "false()“ and theref<strong>or</strong>e does not<br />

lock the data layer allowing the <strong>XFDL</strong> to make the change.<br />

<br />

To c<strong>or</strong>rect this f<strong>or</strong>m and set visibility to “on”, the f<strong>or</strong>m creat<strong>or</strong> must set the model item property<br />

relevant to “true()” and remove the <strong>XFDL</strong> visible option from the field.<br />

To further discuss the model item property “relevant”:<br />

<strong>XF<strong>or</strong>ms</strong> Relevant - defines an XPath f<strong>or</strong>mula with a Boolean result that helps determine<br />

whether a node is relevant to processing. By default, the GUI widgets bound to non-relevant<br />

nodes are invisible and inactive (unless overridden by the appropriate <strong>XFDL</strong> <strong>options</strong>), and they<br />

are not submitted.<br />

Page 10 of 12


<strong>IBM</strong> Software Group<br />

Example 4: nonRelevantExample.xfdl<br />

<br />

<br />

Button 1:<br />

<br />

Button 2:<br />

<br />

<br />

11<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

The final example (NonRelevantExample.xfdl) demonstrates how the non-relevant nodes are<br />

overridden by the <strong>XFDL</strong> <strong>options</strong>. There are two instances: Visible and Active. In the first<br />

button, the xf<strong>or</strong>ms:setvalue value is changed by an “if” statement that when is true()<br />

then make it false(), otherwise it is true(). The second button uses the same concept to set<br />

visible and active, and clears the field when the field is not active.<br />

Page 11 of 12


Conclusion<br />

<strong>IBM</strong> Software Group<br />

• Use model item properties rather than <strong>XFDL</strong><br />

<strong>options</strong><br />

• Exception “relevant”<br />

12<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

When using <strong>XF<strong>or</strong>ms</strong> data driven f<strong>or</strong>ms, it is recommended to use only the <strong>XF<strong>or</strong>ms</strong> model item<br />

properties. By adding the <strong>XFDL</strong> <strong>options</strong> to the f<strong>or</strong>m along with the model item properties, the<br />

f<strong>or</strong>m designer risks a result that might not be expected. Proper f<strong>or</strong>m design dictates that when<br />

using <strong>XFDL</strong>, then use only the element <strong>options</strong>. When using <strong>XF<strong>or</strong>ms</strong>, use only <strong>XF<strong>or</strong>ms</strong> model<br />

item properties with the exception of relevant, where if set to false() <strong>or</strong> non-relevant, the f<strong>or</strong>m<br />

creat<strong>or</strong> can change the visible <strong>or</strong> active state.<br />

Page 12 of 12


Feedback<br />

<strong>IBM</strong> Software Group<br />

Your feedback is valuable<br />

You can help improve the quality of <strong>IBM</strong> Education Assistant content to better<br />

meet your needs by providing feedback.<br />

• Did you find this module useful?<br />

• Did it help you solve a problem <strong>or</strong> answer a question?<br />

• Do you have suggestions f<strong>or</strong> improvements?<br />

Click to send e-mail feedback:<br />

mailto:iea@us.ibm.com?subject=Feedback_about_1255009.ppt<br />

This module is also available in PDF f<strong>or</strong>mat at: ../1255009.pdf<br />

13<br />

© 2008 <strong>IBM</strong> C<strong>or</strong>p<strong>or</strong>ation<br />

You can help improve the quality of <strong>IBM</strong> Education Assistant content by providing feedback.<br />

Page 13 of 12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!