<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>@class is not in JSON, only in XML.  But since we are converting back to XML, it would be nice to have.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>IMPORT is defined as:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                "IMPORT": {</p><p class=MsoNormal>                        "type": "array",</p><p class=MsoNormal>                        "minItems": 1,</p><p class=MsoNormal>                        "items": {</p><p class=MsoNormal>                                "type": "object",</p><p class=MsoNormal>                                "properties": {</p><p class=MsoNormal>                                        "@AS": {</p><p class=MsoNormal>                                                "type": "string"</p><p class=MsoNormal>                                        },</p><p class=MsoNormal>                                        "@importedDEF": {</p><p class=MsoNormal>                                                "type": "string"</p><p class=MsoNormal>                                        },</p><p class=MsoNormal>                                        "@inlineDEF": {</p><p class=MsoNormal>                                                "type": "string"</p><p class=MsoNormal>                                        }</p><p class=MsoNormal>                                },</p><p class=MsoNormal>                                "required": [</p><p class=MsoNormal>                                        "@importedDEF",</p><p class=MsoNormal>                                        "@inlineDEF"</p><p class=MsoNormal>                                ],</p><p class=MsoNormal>                                "additionalProperties": false</p><p class=MsoNormal>                        }</p><p class=MsoNormal>                },</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>EXPORT:</p><p class=MsoNormal>                "EXPORT": {</p><p class=MsoNormal>                        "type": "array",</p><p class=MsoNormal>                        "minItems": 1,</p><p class=MsoNormal>                        "items": {</p><p class=MsoNormal>                                "type": "object",</p><p class=MsoNormal>                                "properties": {</p><p class=MsoNormal>                                        "@AS": {</p><p class=MsoNormal>                                                "type": "string"</p><p class=MsoNormal>                                        },</p><p class=MsoNormal>                                        "@localDEF": {</p><p class=MsoNormal>                                                "type": "string"</p><p class=MsoNormal>                                        }</p><p class=MsoNormal>                                },</p><p class=MsoNormal>                                "required": [</p><p class=MsoNormal>                                        "@localDEF"</p><p class=MsoNormal>                                ],</p><p class=MsoNormal>                                "additionalProperties": false</p><p class=MsoNormal>                        }</p><p class=MsoNormal>                },</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You will have to review the emails on these subjects, I believe.  I am not sure what action was taken.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am not sure you can choose both an array and an object, but Roy would know better.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Sent: </b>Sunday, July 9, 2017 6:56 PM<br><b>To: </b><a href="mailto:roy.walmsley@ntlworld.com">Roy Walmsley</a>; <a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>X3D JSON schema validation problems: @class and IMPORT/EXPORTattributes</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Finally getting "back up on the horse" to test JSON conversions using X3dToJson.xslt (hooray!)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Attached please find current version of X3DJSAIL output .x3d test scene, plus corresponding .json version.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Roy, it looks like there may be several omissions in the X3D JSON Schema:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>a. @class attribute (previously untested) not recognized</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>b. IMPORT/EXPORT statements (previously untested) are apparently expecting an array when simple attributes are provided</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{ "IMPORT":</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "@AS":"WorldInfoDEF2",</p><p class=MsoNormal>                "@importedDEF":"WorldInfoDEF",</p><p class=MsoNormal>                "@inlineDEF":"inlineSceneDef"</p><p class=MsoNormal>   }</p><p class=MsoNormal>},</p><p class=MsoNormal>{ "EXPORT":</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "@AS":"WorldInfoDEF3",</p><p class=MsoNormal>                "@localDEF":"WorldInfoDEF"</p><p class=MsoNormal>   }</p><p class=MsoNormal>},</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Console output follows.  Please advise, TIA.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>=====================================</p><p class=MsoNormal>translation input: test/HelloWorldProgramOutput.x3d</p><p class=MsoNormal>..expected output: test/HelloWorldProgramOutput.json</p><p class=MsoNormal>Script DEF=colorTypeConversionScript contains CDATA source-code text, copied as "#sourceText" using "strings" mode</p><p class=MsoNormal>Script DEF=MaterialModulatorScript contains CDATA source-code text, copied as "#sourceText" using "strings" mode</p><p class=MsoNormal>..error checking with jslint</p><p class=MsoNormal>jslint:test/HelloWorldProgramOutput.json:447:1:JavaScript URL.</p><p class=MsoNormal>jslint:test/HelloWorldProgramOutput.json:812:1:JavaScript URL.</p><p class=MsoNormal>Java Result: 1</p><p class=MsoNormal>..error checking with json-schema-validator</p><p class=MsoNormal>--- BEGIN C:\x3d-code\www.web3d.org\x3d\stylesheets\test\HelloWorldProgramOutput.json---</p><p class=MsoNormal>validation: FAILURE</p><p class=MsoNormal>[ {</p><p class=MsoNormal>   "level" : "error",</p><p class=MsoNormal>   "schema" : {</p><p class=MsoNormal>     "loadingURI" : "file:/C:/x3d-code/www.web3d.org/specifications/x3d-3.3-JSONSchema.json#",</p><p class=MsoNormal>     "pointer" : "/definitions/Box"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "instance" : {</p><p class=MsoNormal>     "pointer" : "/X3D/Scene/-children/5/Transform/-children/0/Anchor/-children/0/Shape/-geometry/Box"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "domain" : "validation",</p><p class=MsoNormal>   "keyword" : "additionalProperties",</p><p class=MsoNormal>   "message" : "object instance has properties which are not allowed by the schema: [\"@class\"]",</p><p class=MsoNormal>   "unwanted" : [ "@class" ]</p><p class=MsoNormal>}, {</p><p class=MsoNormal>   "level" : "error",</p><p class=MsoNormal>   "schema" : {</p><p class=MsoNormal>     "loadingURI" : "file:/C:/x3d-code/www.web3d.org/specifications/x3d-3.3-JSONSchema.json#",</p><p class=MsoNormal>     "pointer" : "/definitions/IMPORT"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "instance" : {</p><p class=MsoNormal>     "pointer" : "/X3D/Scene/-children/24/IMPORT"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "domain" : "validation",</p><p class=MsoNormal>   "keyword" : "type",</p><p class=MsoNormal>   "message" : "instance type (object) does not match any allowed primitive type (allowed: [\"array\"])",</p><p class=MsoNormal>   "found" : "object",</p><p class=MsoNormal>   "expected" : [ "array" ]</p><p class=MsoNormal>}, {</p><p class=MsoNormal>   "level" : "error",</p><p class=MsoNormal>   "schema" : {</p><p class=MsoNormal>     "loadingURI" : "file:/C:/x3d-code/www.web3d.org/specifications/x3d-3.3-JSONSchema.json#",</p><p class=MsoNormal>     "pointer" : "/definitions/EXPORT"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "instance" : {</p><p class=MsoNormal>     "pointer" : "/X3D/Scene/-children/25/EXPORT"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "domain" : "validation",</p><p class=MsoNormal>   "keyword" : "type",</p><p class=MsoNormal>   "message" : "instance type (object) does not match any allowed primitive type (allowed: [\"array\"])",</p><p class=MsoNormal>   "found" : "object",</p><p class=MsoNormal>   "expected" : [ "array" ]</p><p class=MsoNormal>} ]</p><p class=MsoNormal>--- END C:\x3d-code\www.web3d.org\x3d\stylesheets\test\HelloWorldProgramOutput.json---</p><p class=MsoNormal>Java Result: 100</p><p class=MsoNormal>=====================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>p.s. John it looks like MetadataString "@value conversion is incorrectly encoding " as &quot; instead of \" (though #comment and other values look OK), will work on it.</p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>