<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Menlo;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:140771889;
        mso-list-type:hybrid;
        mso-list-template-ids:428481988 134807569 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1225607175;
        mso-list-type:hybrid;
        mso-list-template-ids:-185723084 134807569 134807577 134807579 134807567 134807577 134807579 134807567 134807577 134807579;}
@list l1:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-GB link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>John,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>At the moment my hand crafted schema permits three properties for fieldValue:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>@name<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>@value<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l1 level1 lfo1'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>-children<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>There is no restriction that if there is an “@value” there must  not be a “-children”.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>No, I can see your point if that the user declared field is an SFNode type then it ought to accept a single child. So, perhaps the property would be named “-child”.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Let’s assume, for the sake of argument, that we agree to permit four properties as follows:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>@name<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>@value<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>-child<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo2'><![if !supportLists]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><span style='mso-list:Ignore'>4)<span style='font:7.0pt "Times New Roman"'>      </span></span></span><![endif]><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>-children<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>It would be reasonable to make the “@name” property required, since we always need it.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>As for the other three, only one of the three must occur.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> If we have a “@value” property it must be either boolean, numeric, integer, or string, or else an array of one of these types. So perhaps for the time being it is easier to leave it as “any”.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>If we have “-child” then it must be an object, that is, a single node. And it can be any node. This would need a new definition, e.g. “-oneNode”<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>If we have “-children” then it must be an array of nodes. This is my existing “-allNodes” definition. <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>However, it may have to be done along the following lines, illustrated by modifying my current design:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"fieldValue"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"type"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "array"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"minItems"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:teal;background:white;mso-highlight:white'>1</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"items"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"additionalProperties"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:teal;background:white;mso-highlight:white'>false</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"oneOf"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>[</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                    </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"type"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "object"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"properties"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"@name"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"type"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "string"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"@value"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{}</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"required"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>[</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            "@name"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            "@value"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>],</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"additionalProperties"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:teal;background:white;mso-highlight:white'>false</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                    </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                    </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"type"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "object"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"properties"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"@name"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"type"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "string"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"-children"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>{</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"$ref"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> "#/definitions/-allNodes"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>}</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"required"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>[</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            "@name"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>,</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                            "-children"<o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>],</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:maroon;background:white;mso-highlight:white'>"additionalProperties"</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>:</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:teal;background:white;mso-highlight:white'>false</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                    </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>}</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>                </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>]</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>            </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>}</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'>        </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue;background:white;mso-highlight:white'>},</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black;background:white;mso-highlight:white'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Appended is a graphic representation of this.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Regards,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Roy<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> John Carlson [mailto:yottzumm@gmail.com] <br><b>Sent:</b> 17 April 2016 04:09<br><b>To:</b> Don Brutzman; Roy Walmsley<br><b>Cc:</b> X3D Graphics public mailing list<br><b>Subject:</b> Re: bug report X3dToJson.xslt stylesheet. Handling of SFNode as parameter to Proto<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Well the stylesheet isn’t fixed yet.  Here’s the diff to the stylesheet output that makes my prototype expander code work:<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal><b><span style='font-size:8.5pt;font-family:"Menlo","serif"'>diff --git a/rubikOnFire.json b/rubikOnFire.json</span></b><span style='font-size:8.5pt;font-family:"Menlo","serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><b><span style='font-size:8.5pt;font-family:"Menlo","serif"'>index 7242909..c8120f3 100644</span></b><span style='font-size:8.5pt;font-family:"Menlo","serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><b><span style='font-size:8.5pt;font-family:"Menlo","serif"'>--- a/rubikOnFire.json</span></b><span style='font-size:8.5pt;font-family:"Menlo","serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><b><span style='font-size:8.5pt;font-family:"Menlo","serif"'>+++ b/rubikOnFire.json</span></b><span style='font-size:8.5pt;font-family:"Menlo","serif"'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif";color:#34BBC7'>@@ -397,13 +397,12 @@<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                 },<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                 {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                   "@name":"myShape",<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif";color:#C33720'>-                  "-children":[<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif";color:#34BD26'>+                  "-children":<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                     { "Box":<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                       {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                         "@size":[1,1,1]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                       }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                     }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif";color:#C33720'>-                  ]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                 }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>               ]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>             }<o:p></o:p></span></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>Submitted for your consideration.  I can always had modify code (and so can everyone else???)  -value doesn’t work for me, because it doesn’t pass schema. Using an object doesn’t work in schema.   So I will look at that next.<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>John<o:p></o:p></p></div><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Apr 16, 2016, at 10:42 PM, John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I take that back.  Here’s what I’d like to do…I’d like -children to support both an object (SFNode) and an array (MFNode), so syntax like this<o:p></o:p></p><div><p class=MsoNormal>is acceptable:<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>         { "ProtoInstance":<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>            {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>              "@name":"twentyseven",<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>              "fieldValue": [<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                  "@name":"ttranslation",<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                  "@value":[0,0,0]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                },<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                  "@name":"myShape",<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                  "-children": {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                    "Box": {<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                      "@size":[1,1,1]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                    }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                  }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>                }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>              ]<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>            }<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:8.5pt;font-family:"Menlo","serif"'>          }<o:p></o:p></span></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p></div><div><p class=MsoNormal>Thus, if you have an SFNode, it will will generate syntax like the above for -children, and if you have an MFNode, the stylesheet will generate an array for -children.  And then the schema will either accept an array or an object.<o:p></o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p></div><div><p class=MsoNormal>Is this possible?  I will test to see if the stylesheet is already fixed.<o:p></o:p></p></div><div><p class=MsoNormal><br><br><o:p></o:p></p></div><div><p class=MsoNormal>John<o:p></o:p></p></div><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal>On Apr 16, 2016, at 10:28 PM, John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>I have verified that using -children solves my problem (at least with schema!).<br><br>Thanks,<br><br>John<br><br><o:p></o:p></p><p class=MsoNormal>On Apr 3, 2016, at 12:26 PM, Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<br><br>Apologies for delayed reply.<br><br>Here is the rule that was decided as most straightforward and consistent (currently last bullet under Completed Work):<br><br><a href="http://www.web3d.org/x3d/stylesheets/X3dToJson.html#Issues">http://www.web3d.org/x3d/stylesheets/X3dToJson.html#Issues</a><br><br>* field and fieldValue statements containing SFNode/MFNode content use the -children key.<br><br>Your scene passes all X3D Validator tests (good job there) and I think the relevant excerpts that you are referring to are<br><br>=================================================================<br>...<br><ProtoDeclare name='twentyseven'><br><ProtoInterface><br><span class=apple-tab-span>            </span><field accessType='inputOutput' name='ttranslation' type='SFVec3f' value='0.0 0.0 0.0'/><br><span class=apple-tab-span>            </span><field accessType='inputOutput' name='myShape' type='SFNode'><br><span class=apple-tab-span>            </span> <Sphere/><br><span class=apple-tab-span>            </span></field><br></ProtoInterface><br><ProtoBody><br><span class=apple-tab-span>            </span><Transform translation='0 0 0'><br><span class=apple-tab-span>            </span> <IS><br><span class=apple-tab-span>                        </span><connect nodeField='translation' protoField='ttranslation'/><br><span class=apple-tab-span>            </span> </IS><br><span class=apple-tab-span>            </span> <ProtoInstance name='nine'><br><span class=apple-tab-span>                        </span><fieldValue name='ztranslation' value='0 0 0'/><br><span class=apple-tab-span>                        </span><IS><br><span class=apple-tab-span>                        </span> <connect nodeField='myShape' protoField='myShape'/><br><span class=apple-tab-span>                        </span></IS><br><span class=apple-tab-span>            </span> </ProtoInstance><br><span class=apple-tab-span>            </span> <ProtoInstance name='nine'><br><span class=apple-tab-span>                        </span><fieldValue name='ztranslation' value='0 0 2'/><br><span class=apple-tab-span>                        </span><IS><br><span class=apple-tab-span>                        </span> <connect nodeField='myShape' protoField='myShape'/><br><span class=apple-tab-span>                        </span></IS><br><span class=apple-tab-span>            </span> </ProtoInstance><br><span class=apple-tab-span>            </span> <ProtoInstance name='nine'><br><span class=apple-tab-span>                        </span><fieldValue name='ztranslation' value='0 0 -2'/><br><span class=apple-tab-span>                        </span><IS><br><span class=apple-tab-span>                        </span> <connect nodeField='myShape' protoField='myShape'/><br><span class=apple-tab-span>                        </span></IS><br><span class=apple-tab-span>            </span> </ProtoInstance><br><span class=apple-tab-span>            </span></Transform><br></ProtoBody><br></ProtoDeclare><br><ProtoInstance name='twentyseven'><br><fieldValue name='ttranslation' value='0 0 0'/><br><fieldValue name='myShape'><br><span class=apple-tab-span>            </span><Box size='1 1 1'/><br></fieldValue><br></ProtoInstance><br>=================================================================<br><br>So the corresponding conversion of the ProtoInstance to JSON would be<br><br>{ "ProtoInstance":<br>{<br><span class=apple-tab-span>            </span>"@name":"twentyseven",<br><span class=apple-tab-span>            </span>"fieldValue": [<br><span class=apple-tab-span>            </span> {<br><span class=apple-tab-span>                        </span>"@name":"ttranslation",<br><span class=apple-tab-span>                        </span>"@value":[0,0,0]<br><span class=apple-tab-span>            </span> },<br><span class=apple-tab-span>            </span> {<br><span class=apple-tab-span>                        </span>"@name":"myShape",<br><span class=apple-tab-span>                        </span>"-children":[<br><span class=apple-tab-span>                        </span> { "Box":<br><span class=apple-tab-span>                                    </span>{<br><span class=apple-tab-span>                                    </span> "@size":[1,1,1]<br><span class=apple-tab-span>                                    </span>}<br><span class=apple-tab-span>                        </span> }<br><span class=apple-tab-span>                        </span>]<br><span class=apple-tab-span>            </span> }<br><span class=apple-tab-span>            </span>]<br>}<br>}<br><br>This JSON excerpt above matches the ProtoInstance in "rubikOnFireFlawed.json" file you sent a week ago.<br><br>Full result from X3dToJson.xslt stylesheet attached, passes jslint and also passes Roy's X3D JSON Schema validation.<br><br>Incidentally, nested prototypes are certainly allowed by X3D Specification but the great majority of my testing to date has not been testing nesting.<br><br><br>On 3/25/2016 11:35 PM, John Carlson wrote:<br><br><o:p></o:p></p><p class=MsoNormal>So it actually caught it after my PrototypeExpander ran on it.  So there may be a bug with how my PrototypeExpander handles -children which are SFNodes (actually they are MFNodes (arrays) in the JSON code, so I think the JSON is wrong).  You guys may have discussed this, or something like it, and I was ignorant at the time.<br><br>John<br><br><o:p></o:p></p><p class=MsoNormal>On Mar 26, 2016, at 2:28 AM, John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br><br>If you pass an SFNode to a Proto, it is treated as an MFNode and given -children, and not -value or -child.  This can create -geometry nodes which are arrays instead of objects.  Here are an X3D example, the converted JSON, and how the JSON should appear (hand edited).  I did not pick -value or -child because I forgot what we chose.  I could probably fix this another way, but i think -children is misleading when it’s an SFNode.<rubikOnFire.json><rubikOnFire.x3d><rubikOnFireFixed.json>You may use my X3D file in your X3D resources examples if you wish.  rubikOnFire.json  does not pass schema. If there’s a problem with my X3D file, then we should fix QA, because it passed the latest X3D-Edit tests. (Perhaps there should be a warning?).  If there is a problem with my X3D file, then JSON should not be produced.<br><br>So take your pick, fix the stylesheet, or find an error in my X3D file.   Good luck with both.<br><br>There’s likely more bugs to report.  This is just the first one.  Good catch Roy!<br><br>Thanks,<br><br>John<o:p></o:p></p><p class=MsoNormal><br>all the best, Don<br>-- <br>Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a><br>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman">http://faculty.nps.edu/brutzman</a><br><rubikOnFire.json><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></div></blockquote></div><p class=MsoNormal><o:p> </o:p></p></div></div></body></html>