<html 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 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Do I need to make changes to the stylesheet for X3DJSAIL to accept my patches?  Please let me know!  Also insure that JSON output is correct from X3DJSAIL after stylesheet changes.  You will need to will need to add my patches to make reasonable Java and JavaScript code output correct XML and JSON, methinks.  Patch to X3DJSAIL Java code is attached, Also to find field type and access types from fieldValue names in ProtoInstances and fieldValues (in the field or (Extern)ProtoDeclare field).</p><p class=MsoNormal>-------------------------------------------------------------------------------------------------------------------------------------------</p><p class=MsoNormal>Also this Exception:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: ERROR_VALUE_NOT_FOUND, ProtoInstance name field is required but no value found.</p><p class=MsoNormal>        at org.web3d.x3d.jsail.Core.ProtoInstanceObject.validate(ProtoInstanceObject.java:1088)<o:p></o:p></p><p class=MsoNormal>        at org.web3d.x3d.jsail.Core.fieldValueObject.validate(fieldValueObject.java:1010)<o:p></o:p></p><p class=MsoNormal>        at org.web3d.x3d.jsail.Core.ProtoInstanceObject.addFieldValue(ProtoInstanceObject.java:1167)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.internal.scripts.Script$arc_sail.:program(../nashorn/net/coderextreme/data/arc.sail.js:140)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:637)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.tools.Shell.apply(Shell.java:471)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.tools.Shell.runScripts(Shell.java:400)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.tools.Shell.run(Shell.java:179)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.tools.Shell.main(Shell.java:143)<o:p></o:p></p><p class=MsoNormal>        at jdk.nashorn.tools.Shell.main(Shell.java:119)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Uses of ProtoInstance look like this (note, I won’t always have a DEF, so I can’t use the constructor with name and DEF.  Suggest putting name first, and making DEF optional—or can I set DEF to null?, or provide alternate constructor with just name.).  Java Code is attached –same error as JavaScript.  JavaScript is not attached because of extension.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>var ProtoInstance0 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance1 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance2 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance3 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance4 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance5 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance6 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance7 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance8 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance9 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance10 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance11 = null;<o:p></o:p></p><p class=MsoNormal>var ProtoInstance12 = null;<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance0 = new ProtoInstanceObject().setName("point").setDEF("start"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance1 = new ProtoInstanceObject().setName("point").setDEF("end1"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance2 = new ProtoInstanceObject().setName("point").setDEF("end2"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance3 = new ProtoInstanceObject().setName("point").setDEF("end3"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance4 = new ProtoInstanceObject().setName("x3dconnector").setDEF("connector1"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance7 = new ProtoInstanceObject().setName("x3dconnector").setDEF("connector2"))<o:p></o:p></p><p class=MsoNormal>        .addChild(ProtoInstance10 = new ProtoInstanceObject().setName("x3dconnector").setDEF("connector3"))<o:p></o:p></p><p class=MsoNormal>ProtoInstance4<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance5 = new ProtoInstanceObject().setName("point").setUSE("start")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance4<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance6 = new ProtoInstanceObject().setName("point").setUSE("end1")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance4<o:p></o:p></p><p class=MsoNormal>ProtoInstance7<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance8 = new ProtoInstanceObject().setName("point").setUSE("start")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance7<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance9 = new ProtoInstanceObject().setName("point").setUSE("end2")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance7<o:p></o:p></p><p class=MsoNormal>ProtoInstance10<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance11 = new ProtoInstanceObject().setName("point").setUSE("start")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance10<o:p></o:p></p><p class=MsoNormal>            .addChild(ProtoInstance12 = new ProtoInstanceObject().setName("point").setUSE("end3")));<o:p></o:p></p><p class=MsoNormal>ProtoInstance10<o:p></o:p></p></div></body></html>