[x3d-public] X3D XML Encoding lacks -explicit- support for NULL nodes

Joe D Williams joedwil at earthlink.net
Sat Dec 12 16:11:59 PST 2015


I think I get the point but think it would best to use a realistic 
value, that repesents an initialized not played square instead of 
using a NULL. I know that the SF field can be null, but don't see the 
real for any item in an MF field to be Null.
Thanks for All and Best Wishes,
Joe

----- Original Message ----- 
From: "Holger Seelig" <holger.seelig at yahoo.de>
To: "Don Brutzman" <brutzman at nps.edu>; <x3d-public at web3d.org>
Sent: Saturday, December 12, 2015 11:48 AM
Subject: Re: [x3d-public] X3D XML Encoding lacks -explicit- support 
for NULL nodes


>
>> <field name='foo' accessType='initializeOnly' 
>> type='MFNode'></field>
> This does only encode an empty array.
>
>
> An example would be an tic-tac-toe game we the author would place 
> the items in an MFNode array and leaves the not setted game fields 
> empty by assigning a NULL node:
>
> // Very simple example, because I have tried to keep it as simple as 
> as posible:
>
> function tictactoe (X, O)
> {
>    // Where X and O are some geometries.
>
>    var transform = Browser .currentScene .createNode ("Transform");
>    var children  = transform .children;
>
>    children [0] = X;
>    children [1] = O;
>    children [2] = null;
>
>    children [3] = null;
>    children [4] = X;
>    children [5] = O;
>
>    children [6] = null;
>    children [7] = O;
>    children [8] = X;
>
>    // How can this be encoded in XML if we say:
>
>    Browser .println (transform .toXMLString ());
> }
>
> The example above shows that it is possible to assign NULL values at 
> any index of a MFNode field.
>
> And if a MFNode field in a Script node is used to hold the items how 
> could it be encoded if the score was SAVED and LATER LOADED for 
> example? To illustrate the issue I placed the NULL-tag at the 
> corresponding places. Maybe that way:
>
> <Script name='TicTacToe'>
>    <field accessType='inputOutput' type='MFNode' name='items'>
>       <Transform USE='X'/>
>       <Transform USE='O'/>
>       <NULL/>
>
>       <NULL/>
>       <Transform USE='X'/>
>       <Transform USE='O'/>
>
>       <NULL/>
>       <Transform USE='O'/>
>       <Transform USE='X'/>
>   </field>
> </Script>
>
> In a real game there would probably be another Transform around 
> every X and O with some translation assigned but to keep the example 
> simple I left it away.
>
> On the other hand it is very common for me that there is a 
> null-value in a programming language, C++ has a nullptr value, C the 
> NULL value JavaScript has the null object and that data can be null.
>
>
>
> Am 11.12.2015 um 00:03 schrieb Don Brutzman:
>> [modified subject line for precise understanding]
>>
>> Hi Holger, interesting problem.  Can we break it down and put it 
>> back
>> together please.
>>
>> First, there is implicit support for NULL nodes in Script, 
>> ProtoDeclare,
>> and ProtoInstance declarations.  Namely, any SFNode/MFNode
>> initializations for <field></field> and <fieldValue></fieldValue> 
>> can
>> simply be left empty.
>>
>> Second, a point of information.  X3D Schematron will report a 
>> warning
>> that an SFNode/MFNode initialization is empty, but can be silenced 
>> if an
>> author puts a comment in.  Example:
>>
>> <Script name='nullExample'>
>>   <field name='nihil' accessType='initializeOnly' 
>> type='SFNode'><!--
>> intentionally NULL --></field>
>>   <!-- etc. -->
>> </Script>
>>
>> Third, XML Recommendation syntax says that empty elements are the 
>> same
>> as singleton elements.  (X3D Canonicalization C14N will 
>> deliberately
>> combine empty elements into singletons for consistency.) 
>> Equivalent
>> examples:
>>
>>      <Transform/>
>> and
>>      <Transform><Transform/>
>>
>> Fourth, I've never seen an example like yours but imagine it might 
>> be
>> definable using ClassicVRML syntax.  Wondering, can you think of an
>> example use case where an author might need this construct?
>>
>> Fifth, also wondering if your example including <NULL/> 
>> pseudo-elements
>> is considered equivalent to the following scene subgraph?
>>
>> <Script>
>>    <field accessType='inputOutput' type='MFNode' name='matrix'>
>>       <Transform USE='A'/>
>>       <Transform USE='B'/>
>>       <Transform USE='C'/>
>>    </field>
>> </Script>
>>
>> Appreciate your diligence in exploring this issue.
>>
>>
>> On 12/10/2015 12:31 PM, Holger Seelig wrote:
>>> Rewrote the X3D XML example,
>>> And is there support for NULL nodes in JSON Encoding considered?
>>>
>>> <Script>
>>>    <field accessType='inputOutput' type='MFNode' name='matrix'>
>>>       <Transform USE='A'/>
>>>       <NULL/>
>>>       <Transform USE='B'/>
>>>       <NULL/>
>>>       <Transform USE='C'/>
>>>    </field>
>>> </Script>
>>>
>>> Am 10.12.2015 um 21:14 schrieb Holger Seelig:
>>>> The X3D XML Encoding lacks support for NULL nodes.
>>>>
>>>> Althought it is possible with X3D Classic Encoding to write:
>>>>
>>>> Script {
>>>>    inputOutput MFNode matrix [ USE A, NULL, USE B, NULL, USE C ]
>>>> }
>>>>
>>>> it is not possible to do this in X3D XML Encoding, and therefore 
>>>> there
>>>> should probably something like a NULL-tag <NULL>.
>>>>
>>>> <Script>
>>>>    <field accessType='inputOutput' type='MFNode' name='matrix'>
>>>>       <Script USE='A'/>
>>>>       <NULL/>
>>>>       <Script USE='B'/>
>>>>       <NULL/>
>>>>       <Script USE='C'/>
>>>>    </field>
>>>> </Script>
>>
>> all the best, Don
>
>
> -- 
> Holger Seelig
> Mediengestalter Digital – Digital Media Designer
>
> Scheffelstraße 31a
> 04277 Leipzig
> Germany
>
> Cellular: +49 1577 147 26 11
> E-Mail:   holger.seelig at yahoo.de
> Web:      http://titania.create3000.de
>
> Future to the fantasy ★ ★
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
> 




More information about the x3d-public mailing list