Re: WXS types in XForms

Mark Birbeck wrote:

>Victor,
>  
>
>>I believe the problem arises from null (the empty string) not 
>>being a valid number. The same goes for dates, and I've used 
>>the following solution:
>>  <simpleType name="null_date">
>>    <union>
>>      <simpleType>
>>        <restriction base="date">
>>        </restriction>
>>      </simpleType>
>>      <simpleType>
>>        <annotation>
>>          <documentation>The empty string</documentation>
>>        </annotation>
>>        <restriction base="string">
>>          <length value="0"/>
>>        </restriction>
>>      </simpleType>
>>    </union>
>>  </simpleType>
>>    
>>
>
>You're right in describing the problem, but XML Schema provides a better
>solution that saves you having to create lots of new data types with unions
>in -- it's the concept of 'nillable'. This allows an element that is empty
>to be classed as valid, even if its schema type does not allow this.
>
>To indicate that your element can be set to nil, you use xsd:nillable [1] in
>the schema definition. Note however that this is an attribute of
>xsd:element, not the type, so Alexander's example would need to become:
>
>  <xsd:element name="some-elem" type="myType" nillable="true" />
>
>  <xsd:simpleType name="myType">
>    <xsd:restriction base="xsd:decimal">
>      <xsd:minInclusive value="0" />
>      <xsd:fractionDigits value="5" />
>    </xsd:restriction>
>  </xsd:simpleType>
>
>Although this might seem inconvenient, it is more logical. If you take your
>example, you have effectively invented a new data type that is an amalgam of
>a date and nothing. My guess is that this doesn't really reflect your data
>structure. What you most likely have is an *element* that can either take a
>date, or be left empty. The XML Schema syntax reflects this. (It also allows
>you to use other people's data types without having to create new types all
>the time.)
>
>Once you have the schema set up, then to make use of it you use @xsi:nil [2]
>on your element:
>
>  <some-elem xsi:nil="true" />
>  
>
While this is a neat feature, I really don't understand why I should 
have to include 'xsi:nil="true"' to use it. It's already obvious that 
the element is empty. In addition, I don't want any extra logic to 
handle the paradox of having nil=true /and/ element contents.

Can this attribute be avoided? <flame>If not, I'll rather go with the 
/logical/ solution.</flame>

-- 
Victor Engmark
"Quid quid latine dictum sit, altum viditar" - "What is said in latin, 
sounds profound"

Received on Friday, 8 April 2005 12:01:28 UTC