- From: John Boyer <boyerj@ca.ibm.com>
- Date: Thu, 11 May 2006 13:48:08 -0700
- To: www-forms@w3.org
- Message-ID: <OF483B23C7.B062F4D8-ON8825716B.006EB8B4-8825716B.00724611@ca.ibm.com>
Since the topic of implementations has come up, I think it makes a little sense to talk about what mine is doing and try to see whether other implementations are doing similar things. I'm guessing there are some differences... As is no doubt painfully clear by now, my interpretation of the type MIP is validation of the datatype against the *content* of the node with which the datatype has been associated. This means both of the following validate in my implementation: <instance> <data> <price>100.00</price> <price currency="USD">100.00</price> </data> </instance> <bind nodeset="price" type="xsd:double"/> Does anyone agree or disagree that the second price element should be considered valid according to the type assignment made? I ask because the schema declaration for the price element would be a complex type that adds the currency attribute to a *base* of xsd:double. If your implementation considers the second price to be valid, then your implementation is validating the content of the price element. If your implementation doesn't validate the second price element, then you are validating the whole element, attributes and all, and we have a new disconnect to contend with. Recently, some suggestions were made at the last XForms face-to-face that the type MIP could consume complex types. I interpreted these comments in the context of datatype validation, so we have experimented with adding some code that attempts to accommodate this desire. I make no guarantees that the code will stay there :-), but additional of complex types with simple content necessitates *two* type checks, one with attributes and one without attributes. Here is an example: <xsd:complexType name="internationalPrice"> <xsd:simpleContent> <xsd:extension base="xsd:double"> <xsd:attribute name="currency" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <instance> <data> <price currency="USD">100.00</price> <price currency="EUR">100.00</price> </data> </instance> <bind nodeset="price[1]" type="xsd:double"/> <bind nodeset="price[2]" type="internationalPrice"/> With the experimental code, both price elements above are valid. The first because the simple type validates the *content only* of the (first) price node, and the second because the complex type validates the actual (second) price element. How do these results compare with other implementations? Thanks, John M. Boyer, Ph.D. Senior Product Architect/Research Scientist Co-Chair, W3C XForms Working Group Workplace, Portal and Collaboration Software IBM Victoria Software Lab E-Mail: boyerj@ca.ibm.com http://www.ibm.com/software/ Blog: http://www.ibm.com/developerworks/blogs/page/JohnBoyer
Received on Thursday, 11 May 2006 20:48:22 UTC