<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 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@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;}
@font-face
        {font-family:"Segoe UI Emoji";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
h1
        {mso-style-priority:9;
        mso-style-link:"Heading 1 Char";
        margin-top:12.0pt;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:0in;
        page-break-after:avoid;
        font-size:16.0pt;
        font-family:"Calibri Light",sans-serif;
        color:#2F5496;
        mso-ligatures:standardcontextual;
        font-weight:normal;}
h2
        {mso-style-priority:9;
        mso-style-link:"Heading 2 Char";
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:18.0pt;
        font-family:"Calibri",sans-serif;}
h3
        {mso-style-priority:9;
        mso-style-link:"Heading 3 Char";
        margin-top:2.0pt;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:0in;
        page-break-after:avoid;
        font-size:12.0pt;
        font-family:"Calibri Light",sans-serif;
        color:#1F3763;
        mso-ligatures:standardcontextual;
        font-weight:normal;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.Heading2Char
        {mso-style-name:"Heading 2 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 2";
        font-family:"Calibri",sans-serif;
        mso-ligatures:none;
        font-weight:bold;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";
        mso-ligatures:none;}
span.Heading1Char
        {mso-style-name:"Heading 1 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 1";
        font-family:"Calibri Light",sans-serif;
        color:#2F5496;}
span.Heading3Char
        {mso-style-name:"Heading 3 Char";
        mso-style-priority:9;
        mso-style-link:"Heading 3";
        font-family:"Calibri Light",sans-serif;
        color:#1F3763;}
.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;}
/* List Definitions */
@list l0
        {mso-list-id:1406101745;
        mso-list-type:hybrid;
        mso-list-template-ids:-1047602556 1627667180 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></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-US link="#0563C1" vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoPlainText>[Subject line shift due to importance]<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Super progress Michalis.  I agree and will be able to fix points #2 and #3.  Thank you.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>As for #1, escaping backslashes in ECMAscript source code, we should carefully consider the implications.  First let's look at the existing specification.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>X3D 3.3 encodings Part 2: Classic VRML encoding, clause 6 Encoding of nodes, 6.2.179 Script<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/EncodingOfNodes.html#Script<o:p></o:p></li></ul><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>Script { <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  inputOutput    SFNode   metadata <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  <span style='background:yellow;mso-highlight:yellow'>inputOutput    MFString url</span> <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  initializeOnly SFBool   directOutput<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  initializeOnly SFBool   mustEvaluate<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  <i># and any number of</i>:<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  inputOnly      fieldType fieldName<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  inputOutput    fieldType fieldName<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  outputOnly     fieldType fieldName <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>  initializeOnly fieldType fieldName <o:p></o:p></span></p><p class=MsoNormal style='margin-left:.25in'><span style='font-size:8.5pt;font-family:"Courier New";color:black;mso-ligatures:none'>}<o:p></o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='font-family:Symbol;color:black;mso-ligatures:none'><span style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>        </span></span></span><![endif]><span style='color:black;mso-ligatures:none'>[…prose omitted here…]<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Looks like we might actually have three approaches to look at here:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>a.  <b>Escaped Backslashes</b>.  I agree that the approach you've described is workable.  It matches the approach used with VRML97 encoding, which was originally developed with JavaScript looseness prior to ECMAscript formalization.  So AFAICT it is silent about this. Interestingly, final formalization of amended VRML97 specification referred to ECMAscript standard of that time.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>Virtual Reality Modeling Language, amendment 1, clause 2 Normative references<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>https://www.web3d.org/documents/specifications/14772/V2.0/part1/references.html<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:10.0pt;font-family:"Courier New"'>ISO/IEC DIS 16262 Information technology -- ECMAScript: A general purpose, cross-platform programming language.<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:10.0pt;font-family:"Courier New"'>http://www.ecma.ch<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:10.0pt;font-family:"Courier New"'>http://www.iso.ch/isob/switch-engine-cate.pl?searchtype=refnumber&KEYWORDS=16262<o:p></o:p></span></li></ul><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>However, please note that this means any modern ECMAscript code in a ClassicVRML file might well have different and incompatible syntax compared to the same code block in an XML file.  This divergence of source will almost certainly complicate conversions into other forms of X3D, such as Python or Java etc., which are already each idiosyncratic about handling of backslashes.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>A strict and diverging approach like this will undoubtedly lead to recurring code failures, user/author grief, and also make X3D conversions be considered unreliable.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>b.  <b>Compatible</b>. VRML parsers might look for the keyword and allow such characters within “ecmascript:” code-block sections, allowing unmodified ECMAscript source code.  <o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Issuing an optional warning is always allowed. Implementations can also include a browser property if they like, e.g. ecmascriptSyntax=(compatible|escapedBackslashes) perhaps.<o:p></o:p></p><p class=MsoPlainText><br>If we pursue compatibility, then with further scrutiny we can also look at corresponding support when the url starts with the VRML97 “javascript:” keyword.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>Virtual Reality Modeling Language, amendment 1, clause 4 Concepts, 4.5.4 Scripting language protocols<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>https://www.web3d.org/documents/specifications/14772/V2.0/part1/concepts.html#4.5.4<o:p></o:p></li></ul><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>    #VRML V2.0 utf8 <o:p></o:p></span></p><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>    Script {<o:p></o:p></span></p><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>        url [ "javascript: ...",           # custom protocol ECMAScript<o:p></o:p></span></p><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>              "http://bar.com/foo.js",     # std protocol ECMAScript<o:p></o:p></span></p><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>              "http://bar.com/foo.class" ] # std protocol Java platform bytecode<o:p></o:p></span></p><p class=MsoPlainText style='margin-left:.25in'><span style='font-size:9.0pt;font-family:"Courier New"'>    }<o:p></o:p></span></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>In the example above, the "..." represents in-line ECMAScript source code.<o:p></o:p></li></ul><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Of likely further relevance are Andreas’ recent efforts to get X3D Script code to be shifted compatibly/directly as HTML Script code.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>c.  <b>Specification update</b>.  Parsing needs to be deterministic.  We will likely need to address this point explicitly in next version of X3D XML Encoding in any case.  I can think of a few paths in specification prose to accomplish this, but that can wait.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Here is example showing need for precise definitions.  Let’s say the author wants to include an explicit backslash in the ECMAscript Browser.print statements.  Which is correct?<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:9.0pt;font-family:"Courier New"'>Browser.print ('\ntimeEvent inputValue=' + inputValue);   # compatible form:   no prepended backslash<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:9.0pt;font-family:"Courier New"'>Browser.print ('\\ntimeEvent inputValue=' + inputValue);  # compatible form: adds prepended backslash<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:9.0pt;font-family:"Courier New"'>Browser.print ('\\\ntimeEvent inputValue=' + inputValue);<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:9.0pt;font-family:"Courier New"'>Browser.print ('\\\\ntimeEvent inputValue=' + inputValue);<o:p></o:p></span></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'><span style='font-size:9.0pt;font-family:"Courier New"'>[arrgh…]<o:p></o:p></span></li></ul><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Hmmm.  So, as usual with any parsing, this is all gets a little bit complicated pretty quickly.  Nevertheless the end goal is simple: we want Script code to work consistently in every form of X3D.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Personally am leaning hard towards a Compatible approach, with satisfactory corresponding updates to X3D 4.0 XML Encoding specification that cover it precisely.  Implementation efforts are then fenced to browser and parser builders, who are strict anyway, without impacting (approximately) everyone else in the world that might be writing or using such Script code, hopefully with reckless abandon across every form of X3D encoding/programming.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>What do you think?  Are there perhaps some other choices or issues?  Is compatible ECMAscript source code achievable?<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>all the best, Don<o:p></o:p></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p><p class=MsoPlainText><span style='font-size:9.0pt;font-family:"Courier New"'>X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>-----Original Message-----<br>From: Michalis Kamburelis <michalis.kambi@gmail.com> <br>Sent: Thursday, August 24, 2023 6:00 AM<br>To: Brutzman, Donald (Don) (CIV) <brutzman@nps.edu><br>Cc: X3D Public Mailing List (x3d-public@web3d.org) <x3d-public@web3d.org><br>Subject: Re: VRML97 and ClassicVRML model validation from command line using view3dscene</p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Don,<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>1. As for backslashes: From what I can tell, view3dscene / tovrmlx3d warning is correct. And, while we had some threads on x3d-public about backslashes in X3D XML encoding, I think X3D classic encoding was always clear.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    Tested on <a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/BindingOperations.x3dv"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/BindingOperations.x3dv</span></a><o:p></o:p></p><p class=MsoPlainText>.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    Backslash inside MFString needs to be doubled if you want to literally say "1 backslash", otherwise it certain cases it would be ambiguous (since backslash is also used to prevent double-qoute from ending the string).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    So e.g. <a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/BindingOperations.x3dv"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter04ViewingNavigation/BindingOperations.x3dv</span></a><o:p></o:p></p><p class=MsoPlainText>has this in X3D:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>        url [ "ecmascript:<o:p></o:p></p><p class=MsoPlainText>        ...<o:p></o:p></p><p class=MsoPlainText>        // Browser.print ('\ntimeEvent inputValue=' + inputValue);<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    But that's not correct. You need to write<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>        url [ "ecmascript:<o:p></o:p></p><p class=MsoPlainText>        ...<o:p></o:p></p><p class=MsoPlainText>        // Browser.print ('\\ntimeEvent inputValue=' + inputValue);<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    Then the X3D parser reads this as one backslash, and the ECMAScript contents have one backslash.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>2. As for <a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/TwoSidedMaterialExample.x3dv"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/TwoSidedMaterialExample.x3dv</span></a><o:p></o:p></p><p class=MsoPlainText>error:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    The model is indeed wrong, the field name is missing. It says<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>      appearance Appearance {<o:p></o:p></p><p class=MsoPlainText>        TwoSidedMaterial {<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    It should say<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>      appearance Appearance {<o:p></o:p></p><p class=MsoPlainText>        material TwoSidedMaterial {<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>3. As for <a href="https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter01TechnicalOverview/EmptySceneCoreProfile.x3dv"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter01TechnicalOverview/EmptySceneCoreProfile.x3dv</span></a><o:p></o:p></p><p class=MsoPlainText>:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    The model is indeed wrong, again the field name is missing. It says<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>    WorldInfo {<o:p></o:p></p><p class=MsoPlainText>        title "EmptySceneCoreProfile.x3d"<o:p></o:p></p><p class=MsoPlainText>        # metadata<o:p></o:p></p><p class=MsoPlainText>        MetadataSet {<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    Why is the "metadata" commented out? :) It was actually good! The correct version is<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText>    WorldInfo {<o:p></o:p></p><p class=MsoPlainText>        title "EmptySceneCoreProfile.x3d"<o:p></o:p></p><p class=MsoPlainText>        metadata MetadataSet {<o:p></o:p></p><p class=MsoPlainText>    """<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Regards,<o:p></o:p></p><p class=MsoPlainText>Michalis<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>czw., 24 sie 2023 o 00:39 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>> napisał(a):<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Sounds good Michalis.  The  --enable-downloads switch worked great and noticeably improved the output logs, each of which is now updated online and in version control.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Corresponding detection of geovrml.org issues was particularly useful, separate correspondence posted.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Here is an example of backslash diagnostic, knowing line numbers will help (if possible, some tests have trouble with that).  I can probably figure these out, but thought that you would want consistent exception diagnostic outputs.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ClassicVRML validation: tovrmlx3d.exe <o:p></o:p></p><p class=MsoPlainText>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapte<o:p></o:p></p><p class=MsoPlainText>> r04ViewingNavigation/BindingOperations.x3dv --validate <o:p></o:p></p><p class=MsoPlainText>> --enable-downloads<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: X3D: Invalid X3D file: Invalid sequence in a string: "\n". Backslash must be followed by another backslash or double quote, for SFString and MFString (in X3D classic (VRML) encoding) and for MFString (in X3D XML encoding).<o:p></o:p></p><p class=MsoPlainText>> (21 more occurrences follow)<o:p></o:p></p><p class=MsoPlainText>> Offending text is within embedded javascript code and seems legal, for example:<o:p></o:p></p><p class=MsoPlainText>>   Browser.print ('\n===========\n time t0');<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ClassicVRML validation: tovrmlx3d.exe <o:p></o:p></p><p class=MsoPlainText>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapte<o:p></o:p></p><p class=MsoPlainText>> r11LightingEnvironmentalEffects/BackgroundTimeOfDay.x3dv --validate <o:p></o:p></p><p class=MsoPlainText>> --enable-downloads<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: X3D: Invalid X3D file: Invalid sequence in a string: "\n". Backslash must be followed by another backslash or double quote, for SFString and MFString (in X3D classic (VRML) encoding) and for MFString (in X3D XML encoding).<o:p></o:p></p><p class=MsoPlainText>> (11 more occurrences follow)<o:p></o:p></p><p class=MsoPlainText>> Similar case.  Offending text is within embedded javascript code and seems legal, for example:<o:p></o:p></p><p class=MsoPlainText>>     Browser.print ('groundColorSunrise length=' + <o:p></o:p></p><p class=MsoPlainText>> groundColorSunrise.length + ' '  + groundColorSunrise.toString() + <o:p></o:p></p><p class=MsoPlainText>> '\n');<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Here is an example that I first thought was an unrecognized node, but is actually an incorrect conversion that is a required missing field name.  I’ll fix the converter.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ClassicVRML validation: tovrmlx3d.exe <o:p></o:p></p><p class=MsoPlainText>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapte<o:p></o:p></p><p class=MsoPlainText>> r05AppearanceMaterialTextures/TwoSidedMaterialExample.x3dv --validate <o:p></o:p></p><p class=MsoPlainText>> --enable-downloads<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: VRML/X3D: Error when reading, will skip the rest of X3D file: Error at line 56 column 25: Invalid X3D node content (probably unknown or not allowed field, prototype or VRML 1.0-style children) inside "Appearance": got "TwoSidedMaterial"<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Other entries that appear to be incorrectly failing “Invalid X3D node” content follow.  Long form provided here in case you want to test further.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ClassicVRML validation: tovrmlx3d.exe <o:p></o:p></p><p class=MsoPlainText>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapte<o:p></o:p></p><p class=MsoPlainText>> r01TechnicalOverview/EmptySceneCoreProfile.x3dv --validate <o:p></o:p></p><p class=MsoPlainText>> --enable-downloads<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: VRML/X3D: Error when reading, will skip the rest of X3D file: Error at line 40 column 14: Invalid X3D node content (probably unknown or not allowed field, prototype or VRML 1.0-style children) inside "WorldInfo": got "MetadataSet"<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ClassicVRML validation: tovrmlx3d.exe <o:p></o:p></p><p class=MsoPlainText>> C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chapte<o:p></o:p></p><p class=MsoPlainText>> r15Metadata/MetadataNodeExamplesX3D3.x3dv --validate <o:p></o:p></p><p class=MsoPlainText>> --enable-downloads<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: VRML/X3D: Node "MetadataString" is not allowed at <o:p></o:p></p><p class=MsoPlainText>> the top level of the X3D file<o:p></o:p></p><p class=MsoPlainText>> tovrmlx3d: Warning: VRML/X3D: Error when reading, will skip the rest of X3D file: Error at line 47 column 6: Invalid X3D node content (probably unknown or not allowed field, prototype or VRML 1.0-style children) inside "WorldInfo": got keyword "DEF"<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> That’s it for now.  Your validation is very high quality!  Lots of <o:p></o:p></p><p class=MsoPlainText>> other content errors for me to fix that were previously undetected… 8)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> all the best, Don<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> --<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> X3D graphics, virtual worlds, navy robotics <o:p></o:p></p><p class=MsoPlainText>> <a href="https://faculty.nps.edu/brutzman"><span style='color:windowtext;text-decoration:none'>https://faculty.nps.edu/brutzman</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> -----Original Message-----<o:p></o:p></p><p class=MsoPlainText>> From: Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com"><span style='color:windowtext;text-decoration:none'>michalis.kambi@gmail.com</span></a>><o:p></o:p></p><p class=MsoPlainText>> Sent: Wednesday, August 23, 2023 7:09 AM<o:p></o:p></p><p class=MsoPlainText>> To: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>><o:p></o:p></p><p class=MsoPlainText>> Cc: X3D Public Mailing List (<a href="mailto:x3d-public@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public@web3d.org</span></a>) <o:p></o:p></p><p class=MsoPlainText>> <<a href="mailto:x3d-public@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public@web3d.org</span></a>><o:p></o:p></p><p class=MsoPlainText>> Subject: Re: VRML97 and ClassicVRML model validation from command line <o:p></o:p></p><p class=MsoPlainText>> using view3dscene<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Don,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> 1. As for some missing X3D 4.0 nodes: Yes, this can happen, as in the past I didn't carefully check whether all X3D 4.0 nodes have been added to CGE/view3dscene, and indeed I was fixing later some missing ones (like H-Anim nodes from X3D 4.0).<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>     If you can extract the list of missing X3D 4.0 nodes from above logs, I'll be grateful -- I didn't find relevant messages now from the logs you linked, but admittedly I only looked quickly.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> 2. To avoid the "Error EDownloadError when loading inline file from URL ...: Downloading network resources (from "http" or "https"<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> protocols) is not enabled. Set global EnableBlockingDownloads:=true to <o:p></o:p></p><p class=MsoPlainText>> enable." pass the additional command-line option<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>     --enable-downloads<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>>     to tovrmlx3d. Note that it will definitely increase the validation time. The tovrmlx3d will download the linked resources (Inline X3D content, X3D content referred by EXTERNPROTOs etc.) from the Internet at validation.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Regards,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Michalis<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> śr., 23 sie 2023 o 08:18 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>> napisał(a):<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Michalis, appreciate your adding this feature as part of tovrmlx3d executable.  I’ve integrated into the Ant build scripts and tested operation satisfactorily for all .wrl and .x3dv conversions in the X3D Examples Archives.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Example command-line invocation on windows, a little terser works out OK for these logs:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tovrmlx3d.exe<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors\Chap<o:p></o:p></p><p class=MsoPlainText>> > te<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > r04ViewingNavigation/CollisionExample.x3dv --validate<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Regression-test results online (and in version control to track progress) as follows.  Most look clean.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://www.web3d.org/x3d/content/examples/build.validate.VRML.all.l"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/build.validate.VRML.all.l</span></a><o:p></o:p></p><p class=MsoPlainText>> > og<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > .txt<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://www.web3d.org/x3d/content/examples/build.validate.x3dv.all.l"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/build.validate.x3dv.all.l</span></a><o:p></o:p></p><p class=MsoPlainText>> > og<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > .txt<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fso"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fso</span></a><o:p></o:p></p><p class=MsoPlainText>> > ur%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4<o:p></o:p></p><p class=MsoPlainText>> > a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C6382847882598770<o:p></o:p></p><p class=MsoPlainText>> > 64%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT<o:p></o:p></p><p class=MsoPlainText>> > iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Fq0vPC53Uj%2BOgThMOO<o:p></o:p></p><p class=MsoPlainText>> > VGrDCEqFzscCmotwNW2HoWjKE%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ceforge.net%2Fp%2Fx3d%2Fcode%2FHEAD%2Ftree%2Fwww.web3d.org%2Fx3d%2Fc<o:p></o:p></p><p class=MsoPlainText>> > on<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tent%2Fexamples%2Fbuild.validate.VRML.all.log.txt&data=05%7C01%7Cbru<o:p></o:p></p><p class=MsoPlainText>> > tz<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > man%40nps.edu%7C2baece0d2d40458e15cb08dba3e28885%7C6d936231a51740ea9<o:p></o:p></p><p class=MsoPlainText>> > 19<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > 9f7578963378e%7C0%7C0%7C638283965717273937%7CUnknown%7CTWFpbGZsb3d8e<o:p></o:p></p><p class=MsoPlainText>> > yJ<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > WIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30<o:p></o:p></p><p class=MsoPlainText>> > 00<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > %7C%7C%7C&sdata=q%2BSZdNZqtAMSJlRxmJai8uHirMFpE3N2czqe0LSgyh8%3D&res<o:p></o:p></p><p class=MsoPlainText>> > er<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fso"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fso</span></a><o:p></o:p></p><p class=MsoPlainText>> > ur%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4<o:p></o:p></p><p class=MsoPlainText>> > a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C6382847882598770<o:p></o:p></p><p class=MsoPlainText>> > 64%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBT<o:p></o:p></p><p class=MsoPlainText>> > iI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Fq0vPC53Uj%2BOgThMOO<o:p></o:p></p><p class=MsoPlainText>> > VGrDCEqFzscCmotwNW2HoWjKE%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ceforge.net%2Fp%2Fx3d%2Fcode%2FHEAD%2Ftree%2Fwww.web3d.org%2Fx3d%2Fc<o:p></o:p></p><p class=MsoPlainText>> > on<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tent%2Fexamples%2Fbuild.validate.x3dv.all.log.txt&data=05%7C01%7Cbru<o:p></o:p></p><p class=MsoPlainText>> > tz<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > man%40nps.edu%7C2baece0d2d40458e15cb08dba3e28885%7C6d936231a51740ea9<o:p></o:p></p><p class=MsoPlainText>> > 19<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > 9f7578963378e%7C0%7C0%7C638283965717273937%7CUnknown%7CTWFpbGZsb3d8e<o:p></o:p></p><p class=MsoPlainText>> > yJ<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > WIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C30<o:p></o:p></p><p class=MsoPlainText>> > 00<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > %7C%7C%7C&sdata=Ng9yOUpVA392Jy9gjqoPqCF4vu106L2Zu3kC%2BtFwA8A%3D&res<o:p></o:p></p><p class=MsoPlainText>> > er<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Execution is fast!  Execution took around a half hour for over 4000 examples, most of that time was likely writing test-result outputs to console.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > I haven’t tried fixing any model errors or X3dToVrml97.xslt stylesheet conversion errors yet (e.g. true false vice TRUE FALSE etc.) – that will happen.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > You might see some issues in there that relate to your side, saw a <o:p></o:p></p><p class=MsoPlainText>> > few<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > such as<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > new X3D4 nodes that might not yet be included in view3dscene,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Backslash and \n error reports didn’t include line numbers (might be<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > hard to isolate),<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Saw this error message, but not sure how to implement setting the property via command line, please advise:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tovrmlx3d: Warning: X3D: Error EDownloadError when loading inline file from URL <a href="https://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/NancyDiving.x3d"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/Basic/HumanoidAnimation/NancyDiving.x3d</span></a>: Downloading network resources (from "http" or "https"  protocols) is not enabled. Set global EnableBlockingDownloads:=true to enable.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Happy to now have these post-conversion tests available, enabling continued deliberate improvements in quality assurance (QA).  Again thanks for a tremendous capability, very helpful.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Have fun with VRML!  8)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > all the best, Don<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > --<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Don Brutzman  Naval Postgraduate School, Code USW/Br        <a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > X3D graphics, virtual worlds, navy robotics<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://faculty.nps.edu/brutzman"><span style='color:windowtext;text-decoration:none'>https://faculty.nps.edu/brutzman</span></a><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > -----Original Message-----<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > From: Michalis Kamburelis <<a href="mailto:ichalis.kambi@gmail.com"><span style='color:windowtext;text-decoration:none'>ichalis.kambi@gmail.com</span></a>><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Sent: Monday, August 14, 2023 5:40 AM<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > To: Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Cc: X3D Public Mailing List (<a href="mailto:x3d-public@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public@web3d.org</span></a>)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <<a href="mailto:x3d-public@web3d.org"><span style='color:windowtext;text-decoration:none'>x3d-public@web3d.org</span></a>><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Subject: Re: VRML97 and ClassicVRML model validation from command <o:p></o:p></p><p class=MsoPlainText>> > line<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > using view3dscene<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Don,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > In short: I added now –validate option to tovrmlx3d <span style='font-family:"Segoe UI Emoji",sans-serif'>😊</span><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Example usage on a valid model:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ```<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > $ ./tovrmlx3d ../demo-models/x3d/axis.x3d –validate $ echo $?<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > 0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ```<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > So empty output, and exit status 0, as expected from most tools. You can use this with Ant, Make or anything else.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Example usage on a model with problems:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ```<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > $ ./tovrmlx3d<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ../demo-models/x3d/warnings/invalid_statement_omitted_1.x3dv<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > --validate<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tovrmlx3d: Warning: VRML/X3D: Error when reading, will skip the rest of X3D file: Error at line 15 column 2: Expected node type or DEF or USE, got “}”<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Exception “Exception”:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Validation failed (consult the warnings above), exiting with <o:p></o:p></p><p class=MsoPlainText>> > non-zero<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > status<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > $ echo $?<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > 1<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ```<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > So you get output on stderr, and non-zero exit status.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Please give ~1 hour for Jenkins to process it, and this new version <o:p></o:p></p><p class=MsoPlainText>> > of<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > tovrmlx3d will be part of “snapshot" version on<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fview3dscene.php&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=75DKhwwy035S0ZfUVYy6dTNZ9IjbjvHwR8Ji76HLmWg%3D&reserved=0"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fview3dscene.php&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=75DKhwwy035S0ZfUVYy6dTNZ9IjbjvHwR8Ji76HLmWg%3D&reserved=0</span></a> .<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > I used above test models from <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcastle-engine%2Fdemo-models&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=a2Ap%2Bauwo09e6xt2ESBDAxArENobUPpMWpeZlrfvr5s%3D&reserved=0"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fcastle-engine%2Fdemo-models&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808dba4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=a2Ap%2Bauwo09e6xt2ESBDAxArENobUPpMWpeZlrfvr5s%3D&reserved=0</span></a> .<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Details:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > So far, we did validation just by converting and piping output to<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > /dev/null, so "tovrmlx3d xxxx.x3d > /dev/null". But I agree this was<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > unoptimal:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > - Explicit "--validate" means we don't needlessly waste time converting to /dev/null if you actually just want to validate. We also don't produce eventual warnings when writing, that would sometimes appear and duplicate warnings we already did when reading.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > - In the future, maybe, explicit "--validate" may allow to run some additional tasks dedicated to validation (maybe because they are time-consuming and not necessary for just usual opening). We don't have such tasks right now, but it would be nice to have such option available.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > - With explicit "--validate", any warning or error causes non-zero<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > exit status. Makes sense, since a warning (even if we can continue<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > working) still means validation failed.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > So ... I added "--validate" option to tovrmlx3d.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Of note: A rename is on the horizon, for a few reasons (glTF export, consistency with other CGE tools). Most likely:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > - tovrmlx3d -> caste-scene-process<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > - view3dscene -> castle-scene-view<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > I haven't made up my mind 100% yet, if rename happens I will of <o:p></o:p></p><p class=MsoPlainText>> > course<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > announce it prominently everywhere :)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Regards,<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > Michalis<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > niedz., 13 sie 2023 o 17:53 Brutzman, Donald (Don) (CIV) <<a href="mailto:brutzman@nps.edu"><span style='color:windowtext;text-decoration:none'>brutzman@nps.edu</span></a>> napisał(a):<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Hi Michalis.  Thanks for all of your immense, continuing work.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > I am hoping to add validation of converted .wrl and .x3dv files to the regression test suite for X3D Example Archives.  This will check the quality of output from the X3dToVrml.xslt stylesheets, and improve the quality assurance (QA) of all VRML models offered there – over 4000 in each case. In each case I’ll create and commit a build.log text file so that we can keep track of compliance and progress.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > X3D Resources, Examples: Scene Archives for X3D<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examp"><span style='color:windowtext;text-decoration:none'>https://www.web3d.org/x3d/content/examples/X3dResources.html#Examp</span></a><o:p></o:p></p><p class=MsoPlainText>> > > le<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > s<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > To do so, am thinking that command-line invocation (CLI) of your view3dscene or tovrmlx3d executable tools can be accomplished through addition to the existing Ant build.xml scripts.  Am keen to proceed with that task.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Am looking through the view3dscene CLI documentation, but am not exactly sure how to accomplish this.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > view3dscene, 4. Command-line options<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F</span></a><o:p></o:p></p><p class=MsoPlainText>> > > ca%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808db<o:p></o:p></p><p class=MsoPlainText>> > > a4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259<o:p></o:p></p><p class=MsoPlainText>> > > 877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzI<o:p></o:p></p><p class=MsoPlainText>> > > iLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vi6H9tx9Fdmw<o:p></o:p></p><p class=MsoPlainText>> > > sXQoC83tRiLuho6Vr3lsqGBlh9cklmk%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > stle-engine.io%2Fview3dscene.php%23section_command_line_options&da<o:p></o:p></p><p class=MsoPlainText>> > > ta<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > =05%7C01%7Cbrutzman%40nps.edu%7C2baece0d2d40458e15cb08dba3e28885%7<o:p></o:p></p><p class=MsoPlainText>> > > C6<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > d936231a51740ea9199f7578963378e%7C0%7C0%7C638283965717273937%7CUnk<o:p></o:p></p><p class=MsoPlainText>> > > no<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > wn%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1ha<o:p></o:p></p><p class=MsoPlainText>> > > Ww<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > iLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Wxt6n6awK8i1MHeaKC1Wv8%2Fbdn<o:p></o:p></p><p class=MsoPlainText>> > > %2<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > FsWIo4JGaCBfRFzkw%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > view3dscene, 4.2. Converting to X3D<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F</span></a><o:p></o:p></p><p class=MsoPlainText>> > > ca%2F&data=05%7C01%7Cbrutzman%40nps.edu%7C3d80318df4e84ffb9bd808db<o:p></o:p></p><p class=MsoPlainText>> > > a4a2128e%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638284788259<o:p></o:p></p><p class=MsoPlainText>> > > 877064%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzI<o:p></o:p></p><p class=MsoPlainText>> > > iLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vi6H9tx9Fdmw<o:p></o:p></p><p class=MsoPlainText>> > > sXQoC83tRiLuho6Vr3lsqGBlh9cklmk%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > stle-engine.io%2Fview3dscene.php%23section_converting&data=05%7C01<o:p></o:p></p><p class=MsoPlainText>> > > %7<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Cbrutzman%40nps.edu%7C2baece0d2d40458e15cb08dba3e28885%7C6d936231a<o:p></o:p></p><p class=MsoPlainText>> > > 51<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > 740ea9199f7578963378e%7C0%7C0%7C638283965717273937%7CUnknown%7CTWF<o:p></o:p></p><p class=MsoPlainText>> > > pb<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > GZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI<o:p></o:p></p><p class=MsoPlainText>> > > 6M<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > n0%3D%7C3000%7C%7C%7C&sdata=NZk2EMKFQcYMv11ajbUJrWXvp07dmDOhxr4QLS<o:p></o:p></p><p class=MsoPlainText>> > > pz<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > nKE%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Additional options needed, or not seen:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Validation report only, plain text via console.  (Perhaps a<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > -validate<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > switch is a variation on your ---write switches.) Avoid creation <o:p></o:p></p><p class=MsoPlainText>> > > of<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > additional files, if possible.  (I might send each output to a<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > single<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > temp file, but all that file writing will likely slow down the<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > already-long overall process.)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Please advise if there is a way to invoke one of your tools to accomplish this.  CLI example will be helpful.  Thanks in advance for all guidance.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > Have fun with VRML!   8)<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> > > all the best, Don<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> ><o:p></o:p></p></div></body></html>