[Zope3-dev] Re: Proposed widget/schema work for the Rivah sprint
(Thursday and Friday this week)
Jim Fulton
jim at zope.com
Wed Sep 7 13:36:43 EDT 2005
Florent Guillaume wrote:
> Jim Fulton wrote:
>
>>> But a schema is useful for more than "specifying the values of an
>>> object". All notions of schemas I've encountered (CPS Schemas, XML
>>> Schemas, Archetypes) use the schema to constrain or validate an
>>> existing object, yes, but also to create new objects from scratch
>>> (even in the absence of widgets). Being able to specify initial
>>> values is quite important there.
>>
>>
>> It's not clear to me that XML schemas specify this. I'm quite skeptical
>> than they do. (They have this mysterious "initial value" thing that
>> I can't make any sense of.) I can't believe that XML schemas deal
>> with the history of a document, which would seem necessary to give
>> inital value, as we mean it, any meaning.
>
>
> http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints (2.2.1) says:
>
> Default values of both attributes and elements are declared using the
> 'default' attribute, although this attribute has a slightly different
> consequence in each case. When an attribute is declared with a default
> value, the value of the attribute is whatever value appears as the
> attribute's value in an instance document; if the attribute does not
> appear in the instance document, the schema processor provides the
> attribute with a value equal to that of the 'default' attribute. Note
> that default values for attributes only make sense if the attributes
> themselves are optional, and so it is an error to specify both a
> default value and anything other than a value of 'optional' for 'use'.
>
> An "instance document" is comparable to our object, it is what is being
> validated/filled by the processor.
This is *not* what default/initial-value is in zope schema. The XML
"default" concept is closest to missing_value in zope schema.
The default attribute of current zope schema fields are defined
(by the README.txt in zope.schema) as:
"Default field values are assigned to objects when they are first
created."
Interestingly, we don't really use them that way. There may
be cases where __init__ honors these specifications. If there
are, I doubt they are common. In practice, we use this information to
initialize forms. That is, we use these as UI hints. I think this
is a valid use case, but I think it is better served by information
in form fields.
Jim
--
Jim Fulton mailto:jim at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Zope3-dev
mailing list