[x3d-public] x3dom bug related to IS/children PROTOs?
John Carlson
yottzumm at gmail.com
Sun Nov 22 19:12:49 PST 2020
How are we going to handle HTML5's "add any attribute you like" in X3D4?
Does this mean validation is fundamentally broken?
Wondering...
John
On Sun, Nov 22, 2020 at 9:08 PM John Carlson <yottzumm at gmail.com> wrote:
> I take that back. containerField is not allowed in JSON, for the most
> part. So that means just class should be added to JSON schema for v4.0.
> Does X3DOM or X_ITE effectively use class attributes, so if I translate
> JSON to XML/DOM it can handle the class attribute? Does v4 also include
> on..="..." event so these need to be added to the JSON schema?
>
> Thanks,
>
> John
>
> On Sun, Nov 22, 2020 at 9:02 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> " Nodes containing a USE="someName" attribute can include no other
>> attributes except containerField and class. Default values for other
>> fields shall be ignored since field definitions in the original DEF node
>> declaration have precedence."
>>
>>
>> So now what's the interpretation of "can"? Can I pull all this "oneOf"
>> stuff out of the JSON schema, or do we want to reject other properties?
>>
>> It would seem like HTML would allow us to add more attributes, out of the
>> box. But this is JSON! I guess we actually need to look at the Working
>> Draft of the JSON encoding!
>>
>>
>> X3DOM and X_ITE do not contain JSON schema code, so they can do what they
>> want. What should X3DJSONLD and the JSON validator do? At a minimum, I
>> suggest adding containerField and class to allowed properties along with
>> required USE property in subschema. Should I also include USE in the other
>> subschema for each node?
>>
>> Thanks for the reference!
>>
>> John
>>
>> On Sun, Nov 22, 2020 at 8:48 PM Andreas Plesch <andreasplesch at gmail.com>
>> wrote:
>>
>>>
>>> https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#DEFAndUSEAttributeSyntax
>>>
>>> does state that nodes cannot have other attributes next to USE except
>>> for class and containerField. Perhaps there should be an extra sentence on
>>> ProtoInstance since it is not a node allowing but not requiring the name
>>> attribute.
>>>
>>>
>>>
>>>
>>>
>>> On Sun, Nov 22, 2020 at 9:38 PM Andreas Plesch <andreasplesch at gmail.com>
>>> wrote:
>>>
>>>> Yes, I agree, in most cases USE would be the only attribute. Note that
>>>> USE is not a field, it is an attribute in the XML encoding.
>>>>
>>>> I am not sure how strict the XML encoding is in requiring that there
>>>> are no other attributes next to USE. They may be allowed but without any
>>>> effect.
>>>>
>>>> I also agree that USE in ProtoInstance is slightly different from USE
>>>> in regular nodes since ProtoInstance is just a verbose XML construct to
>>>> instruct instancing of a declared node.
>>>>
>>>> But I am not sure if that distinction requires additional clarification
>>>> in the spec.
>>>>
>>>> Andreas
>>>>
>>>> On Sun, Nov 22, 2020 at 9:11 PM John Carlson <yottzumm at gmail.com>
>>>> wrote:
>>>>
>>>>> I'll just pretend we zoomed back from 2020->2015 virtually (in the
>>>>> mind).
>>>>>
>>>>> Can we agree, that in most cases (nodes), USE is the only field
>>>>> allowed when USE appears?
>>>>>
>>>>> If not, I've got to change all my JSON schema generating code.
>>>>>
>>>>> Maybe we'll decide on another JSON schema based on the XML schema,
>>>>> since XML Spy can now generate a JSON schema from an XML schema last I
>>>>> heard.
>>>>>
>>>>> Let's just break all my coding for the last 5 years! Whee!
>>>>>
>>>>> I would need to know all the nodes/statements where additional fields
>>>>> are allowed when USE appears. I think there's only two cases.
>>>>>
>>>>> Or is this a thing in X3D4?
>>>>>
>>>>> It seems like USE has two different semantics, whether you're using it
>>>>> on a node or not?
>>>>>
>>>>> John
>>>>>
>>>>> On Sun, Nov 22, 2020 at 7:51 PM Andreas Plesch <
>>>>> andreasplesch at gmail.com> wrote:
>>>>>
>>>>>> I think the spec. does not have an opinion on this, see x3d-public
>>>>>> and other players. Cheers, -Andreas
>>>>>>
>>>>>> On Sun, Nov 22, 2020 at 8:47 PM John Carlson <yottzumm at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Note that X3DOM should now probably flag ProtoInstances with both
>>>>>>> name and USE with a warning that the code is now non-compliant or
>>>>>>> deprecated. I believe the spec says that USE and name together are only
>>>>>>> allowed in certain nodes (I think Metadata and perhaps one other comes to
>>>>>>> mind).
>>>>>>>
>>>>>>> That's the best I have right now. See previous discussion on
>>>>>>> mailing list regarding extra fields including name along with USE.
>>>>>>>
>>>>>>> Also, if you use JSON schema, it should catch JSON examples as
>>>>>>> non-compliant if they contain both name and USE. This works in JSON,
>>>>>>> because containerFields are not used in JSON.
>>>>>>>
>>>>>>> And yes, this may have all changed under my nose!
>>>>>>>
>>>>>>> John
>>>>>>>
>>>>>>>
>>>>>>> On Sun, Nov 22, 2020 at 7:19 PM Andreas Plesch <
>>>>>>> andreasplesch at gmail.com> wrote:
>>>>>>>
>>>>>>>> Yes, the Diamond files have the diamond shape in the
>>>>>>>> ProtoDeclaration.
>>>>>>>>
>>>>>>>> I added guards for nonimplemented but expected, standard fields
>>>>>>>> (such as addChildren) to ProtoDeclaration.js, and allowed USE
>>>>>>>> ProtoInstances by looking for DEFs in the dom (before parsing, at the
>>>>>>>> initial step of translation to the concise x3dom syntax).
>>>>>>>>
>>>>>>>> These changes should help with making these older HAnim protos work
>>>>>>>> better.
>>>>>>>>
>>>>>>>> -Andreas
>>>>>>>>
>>>>>>>> On Sun, Nov 22, 2020 at 4:43 PM John Carlson <yottzumm at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> I see one Shape (in a proto?), but I didn’t look for geometry. I
>>>>>>>>> believe there is satisfactory appearance. I believe I only checked one
>>>>>>>>> LOA4 file. I am not sure about converted files.
>>>>>>>>>
>>>>>>>>> I will look into this in more detail later today. I believe at
>>>>>>>>> least the Diamond files should have shapes.
>>>>>>>>>
>>>>>>>>> John
>>>>>>>>>
>>>>>>>>> On Sun, Nov 22, 2020 at 9:35 AM Andreas Plesch <
>>>>>>>>> andreasplesch at gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Yes this is Proto related, due to the "addChildren" and
>>>>>>>>>> "removeChildren" fields not being available in x3dom for grouping nodes.
>>>>>>>>>> And those are not available because x3dom cannot route node type fields.
>>>>>>>>>>
>>>>>>>>>> Although the Protos define the addChildren field it is actually
>>>>>>>>>> never used in the examples, so they are not actually necessary. You could
>>>>>>>>>> just remove them.
>>>>>>>>>>
>>>>>>>>>> The examples use an old Proto implementation of HAnim. The native
>>>>>>>>>> implementation is also available, without Protos.
>>>>>>>>>>
>>>>>>>>>> Perhaps it would make sense to add noop stubs for
>>>>>>>>>> add/removeChildren fields in X3DGroupingNode.js, or add a guard for the
>>>>>>>>>> Proto field type.
>>>>>>>>>>
>>>>>>>>>> I notice that hanimloa4.html does not have any geometry to
>>>>>>>>>> render, only the joint structure.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Andreas Plesch
>>>>>>>> Waltham, MA 02453
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Andreas Plesch
>>>>>> Waltham, MA 02453
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Andreas Plesch
>>>> Waltham, MA 02453
>>>>
>>>
>>>
>>> --
>>> Andreas Plesch
>>> Waltham, MA 02453
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20201122/5ad37f52/attachment-0001.html>
More information about the x3d-public
mailing list