<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 " 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>