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
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 Fulton mailto:[EMAIL PROTECTED] Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
Zope3-dev mailing list