- From: Erik Bruchez <ebruchez@orbeon.com>
- Date: Mon, 04 Jun 2007 18:23:36 -0700
- To: public-forms@w3.org
- CC: www-forms-editor@w3.org
All,
I am sending this following an interesting comment about schema types
from a user.
XForms 1.1 specifies that:
"The type model item property associates a datatype (as defined in
[XML Schema part 2]) with the string-value (as defined in [XPath
1.0]) of an instance node. The datatype being associated can be
obtained from a simpleType definition or a simpleContent definition
from a complexType. If the datatype cannot be obtained as just
described, then the Default Value of xsd:string is used."
Now, I assume that this means I can write something like this:
<xs:element name="state-element">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="test:state-type">
<xs:attribute name="code" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
use it as follows:
<xforms:bind nodeset="state" type="test:state-element"/>
and I should expect the validator to validate the content of my
<state> instance element using the datatype part of my xs:element
definition.
First, is this correct?
Second, what if my type is as follows instead:
<xs:element name="state-element" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="test:state-type">
<xs:attribute name="code" type="xs:integer"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
and my instance element:
<state xsi:nil="true">CA</state>
Is XForms supposed to honor xsi:nil in this case, and accept an empty
content for <state>?
My guess is that it is not in fact part of the dataype. XML Schema says:
"If {nillable} is true, then an element may also be ·valid· if it
carries the namespace qualified attribute with [local name] nil
from namespace http://www.w3.org/2001/XMLSchema-instance and value
true (see xsi:nil (§2.6.2)) even if it has no text or element
content despite a {content type} which would otherwise require
content."
So the nil thing seems to apply to the validity of the element, not of
its datatype part.
However, after all the form author is binding a nillable element type
to an XForms instance element, and it is not very intuitive that
xsi:nil won't work in this case.
Whatever the answer, I think that it would be very valuable to clarify
this in the spec.
-Erik
--
Orbeon Forms - Web Forms for the Enterprise Done the Right Way
http://www.orbeon.com/
Received on Tuesday, 5 June 2007 01:23:41 UTC