So, it seems the bug is partly saying `| constraint`, because any non-final 
attribute is, in theory, constrainable (there may be some that don't work, but 
that would be a bug in either the declaration or the implementation).

Secondly, I think we would like to support the XSD declaration for non-negative 
number, so we ought to teach convertAttributeType about that.

Finally, we don't currently have a way to express that restriction in 
Javascript (although perhaps some day we will).  So for now, it is really just 
a descriptive declaration.

I'm willing to accept just changing the declaration to `number`, but if so, we 
should file an improvement to support the `xsd:float {minInclusive="0"}` 
declaration.

On 2010-05-26, at 07:56, André Bargull wrote:

> The schema compiler changes any enumeration [1] (like "foo | bar | baz") to 
> "string" type, because enumerations are only used (intended to be used?) for 
> string values [2]. Therefore declaring <animatorgroup>#duration's type to 
> 'xsd:float {minInclusive="0"} | constraint' is just wrong. We could change 
> the type to 'xsd:float {minInclusive="0"}', but then the schema compiler 
> needs to change it to "number" again, because the schema reader doesn't 
> understand that type [3].
> We just don't have any facility like in xsd to constrain attributes to valid 
> values. I don't even know if such a facility is feasible at compile time due 
> to constraints.
> 
> 
> [1] except for boolean | 'inherit' which becomes inheritableBoolean, see 
> SchemaBuilder#convertAttributeType()
> [2] complete list of enumeration types from lfc.lzx schema file:
> <node>#initstage, <animatorgroup>#motion, <animatorgroup>#process, 
> <datapath>#axis, <datapath>#replication, <dataset>#querytype, <dataset>#type, 
> <script>#when, <view>#align, <view>#backgroundrepeat, <view>#stretches, 
> <view>#valign, <include>#type
> [3] cf. SchemaBuilder#convertAttributeType()
> 
> On 5/26/2010 1:29 PM, P T Withington wrote:
>> Sorry, this got lost in my inbox.
>> 
>> My question is:  clearly the intent is to have the schema indicate (and if 
>> you have a verifier, verify) that an animation duration must be 
>> non-negative.  So the real bug lies in the schema compiler, not in the 
>> declaration.  So shouldn't we really be fixing that?
>> 
>> To change the XML type declaration to "number" is acceptable if there is no 
>> way to fix the schema compiler.
>> 
>> On 2010-05-07, at 12:36, André Bargull wrote:
>> 
>>> Change 20100507-bargull-4X2 by barg...@bargull02 on 2010-05-07 18:18:33
>>> in /home/anba/src/svn/openlaszlo/trunk
>>> for http://svn.openlaszlo.org/openlaszlo/trunk
>>> 
>>> Summary: change lz.animatorgroup#duration lzxtype to "number"
>>> 
>>> New Features:
>>> 
>>> Bugs Fixed: LPP-8980 (http://jira.openlaszlo.org/jira/browse/LPP-8980)
>>> 
>>> Technical Reviewer: ptw
>>> QA Reviewer: (pending)
>>> Doc Reviewer: (pending)
>>> 
>>> Documentation:
>>> 
>>> Release Notes:
>>> lz.animatorgroup#duration type has been changed to "number"
>>> 
>>> Overview:
>>> 
>>> 
>>> Details:
>>> This is a change for the @lzxtype for lz.animatorgroup#duration. The 
>>> lzxtype was set to 'xsd:float {minInclusive="0"} | constraint' which was 
>>> treated as an enumeration type by the schema compiler and therefore the 
>>> actual type was "string". This means any value for the duration attribute 
>>> written in the<animatorgroup>  tag was changed to a String in script. 
>>> That's for sure not the desired result for a numeric type like duration.
>>> With this change, the @lzxtype is updated to "number". There is only one 
>>> potential issue: Users will have to update<attribute name="duration" 
>>> value="..." type="string"/>  to<attribute name="duration" value="..." 
>>> type="number"/>. Although I doubt anyone is really using that form.
>>> 
>>> 
>>> Tests:
>>> testcase from bugreport
>>> 
>>> Files:
>>> M WEB-INF/lps/lfc/controllers/LzAnimatorGroup.lzs
>>> 
>>> Changeset: 
>>> http://svn.openlaszlo.org/openlaszlo/patches/20100507-bargull-4X2.tar
>>> 
>> 
>> 


Reply via email to