<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>Code does not match a URI.  You can modify your validator to accept a wider range of URI values, or we can get rid of the format, or we can probably all decide on a different format. Choices 1 and 3 require you modify your validator. </p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Here’s the current definition of @url in JSON schema:</p><p class=MsoNormal>                                "@url": {</p><p class=MsoNormal>                                        "type": "array",</p><p class=MsoNormal>                                        "minItems": 1,</p><p class=MsoNormal>                                        "items": {</p><p class=MsoNormal>                                                "type": "string",</p><p class=MsoNormal>                                                "format": "uri"</p><p class=MsoNormal>                                        }</p><p class=MsoNormal>                                }</p><p class=MsoNormal><o:p> </o:p></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, August 20, 2017 5:31 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>JSON schema handling of Script url containing ecmascript source</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Found the following problem with JSON schema handling of Script url containing </p><p class=MsoNormal>source:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>====================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>C:\x3d-code\www.web3d.org\x3d\content\examples\Vrml2Sourcebook/Chapter30Scripts//Figure30_1ScriptSlidingBall.json </p><p class=MsoNormal>validation checking with json-schema-validator</p><p class=MsoNormal>--- BEGIN </p><p class=MsoNormal>C:\x3d-code\www.web3d.org\x3d\content\examples\Vrml2Sourcebook\Chapter30Scripts\Figure30_1ScriptSlidingBall.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" : </p><p class=MsoNormal>"file:/C:/x3d-code/www.web3d.org/specifications/x3d-3.3-JSONSchema.json#",</p><p class=MsoNormal>     "pointer" : "/definitions/Script/properties/@url/items"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "instance" : {</p><p class=MsoNormal>     "pointer" : "/X3D/Scene/-children/3/Group/-children/8/Script/@url/0"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   "domain" : "validation",</p><p class=MsoNormal>   "keyword" : "format",</p><p class=MsoNormal>   "attribute" : "uri",</p><p class=MsoNormal>   "message" : "string \"ecmascript: function set_fraction( fraction eventTime ) </p><p class=MsoNormal>{ value_changed[0] = fraction; value_changed[1] = 0.0; value_changed[2] = 0.0; </p><p class=MsoNormal>}\" is not a valid URI",</p><p class=MsoNormal>   "value" : "ecmascript: function set_fraction( fraction eventTime ) { </p><p class=MsoNormal>value_changed[0] = fraction; value_changed[1] = 0.0; value_changed[2] = 0.0; }"</p><p class=MsoNormal>} ]</p><p class=MsoNormal>--- END </p><p class=MsoNormal>C:\x3d-code\www.web3d.org\x3d\content\examples\Vrml2Sourcebook\Chapter30Scripts\Figure30_1ScriptSlidingBall.json---</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>====================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter30Scripts/Figure30_1ScriptSlidingBall.x3d</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>       <!-- Second Script example: executable code is placed in url field. This </p><p class=MsoNormal>is legal, but no longer a recommended approach. --></p><p class=MsoNormal>       <!-- Warning: avoid // inline comments or else canonicalization will hide </p><p class=MsoNormal>all follow-on code! --></p><p class=MsoNormal>       <Script DEF='MoverUsingUrlScript' url='"ecmascript: function </p><p class=MsoNormal>set_fraction( fraction eventTime ) { value_changed[0] = fraction; </p><p class=MsoNormal>value_changed[1] = 0.0; value_changed[2] = 0.0; }"'></p><p class=MsoNormal>         <field accessType='inputOnly' name='set_fraction' type='SFFloat'/></p><p class=MsoNormal>         <field accessType='outputOnly' name='value_changed' type='SFVec3f'/></p><p class=MsoNormal>       </Script></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>====================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter30Scripts/Figure30_1ScriptSlidingBall.json</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>{</p><p class=MsoNormal>   "#comment":"Second Script example: executable code is placed in url field. </p><p class=MsoNormal>This is legal, but no longer a recommended approach."</p><p class=MsoNormal>},</p><p class=MsoNormal>{</p><p class=MsoNormal>   "#comment":"Warning: avoid // inline comments or else canonicalization will </p><p class=MsoNormal>hide all follow-on code!"</p><p class=MsoNormal>},</p><p class=MsoNormal>{ "Script":</p><p class=MsoNormal>   {</p><p class=MsoNormal>     "@DEF":"MoverUsingUrlScript",</p><p class=MsoNormal>     "@url":["ecmascript: function set_fraction( fraction eventTime ) { </p><p class=MsoNormal>value_changed[0] = fraction; value_changed[1] = 0.0; value_changed[2] = 0.0; }"],</p><p class=MsoNormal>     "field": [</p><p class=MsoNormal>       {</p><p class=MsoNormal>         "@name":"set_fraction",</p><p class=MsoNormal>         "@accessType":"inputOnly",</p><p class=MsoNormal>         "@type":"SFFloat"</p><p class=MsoNormal>       },</p><p class=MsoNormal>       {</p><p class=MsoNormal>         "@name":"value_changed",</p><p class=MsoNormal>         "@accessType":"outputOnly",</p><p class=MsoNormal>         "@type":"SFVec3f"</p><p class=MsoNormal>       }</p><p class=MsoNormal>     ]</p><p class=MsoNormal>   }</p><p class=MsoNormal>},</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>====================================</p><p class=MsoNormal><o:p> </o:p></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><p class=MsoNormal><o:p> </o:p></p></div></body></html>