<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=us-ascii">
<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
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;}
span.EmailStyle22
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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:1693725726;
        mso-list-type:hybrid;
        mso-list-template-ids:557062520 1634232392 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:16;
        mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        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",serif;}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        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:\F0B7;
        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",serif;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        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:\F0B7;
        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",serif;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        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="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Please see the X3DJSAIL web page for further details on building things yourself.  Specific suggested build improvements, problem identification, and feature requests are always welcome.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">X3DJSAIL, Codebase Production<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">https://www.web3d.org/specifications/java/X3DJSAIL.html#Codebase<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">That includes link to typical build output for me, which you can use for comparison:<o:p></o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">https://www.web3d.org/specifications/java/build.out.X3DJSAIL.txt<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Another output log is also provided for building examples.<o:p></o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">X3DJSAIL Examples<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">https://www.web3d.org/specifications/java/X3DJSAIL.html#Examples<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">https://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.java<o:p></o:p></li><li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">https://www.web3d.org/specifications/java/examples/HelloWorldProgramOutputLog.txt<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Build logs are maintained in version control so you can also check history of project evolution.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">Regarding X3D case in point: yes each of the Metadata nodes might indeed appear as either ‘metadata’ field within other nodes, or as ‘value’ field of a parent MetadataSet node.<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As you also noted, X3DUOM is correct.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Aha moment: and so, can confirm accuracy of your note below that the following autogenerated statement for each of the X3DJSAIL Metadata nodes is mistaken:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">containerField_ALTERNATE_VALUES = new String[] { "value", "value" }; // type containerFieldChoicesMetadata<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Now fixed as:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoListParagraph" style="margin-left:0in;mso-list:l0 level1 lfo1">containerField_ALTERNATE_VALUES = new String[] { "value", "metadata" }; // type containerFieldChoicesMetadata<o:p></o:p></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks for that.  Will deploy corrected source in updated build later today.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hope all this build detail helps, have fun with X3DJSAIL!  8)<o:p></o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif">all the best, Don<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif">--
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif">Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New",serif">X3D graphics, virtual worlds, navy robotics https://</span>
<span style="font-size:10.0pt;font-family:"Courier New",serif">faculty.nps.edu/brutzman<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> John Carlson <yottzumm@gmail.com> <br>
<b>Sent:</b> Thursday, December 30, 2021 10:33 PM<br>
<b>To:</b> Brutzman, Donald (Don) (CIV) <brutzman@nps.edu>; X3D Graphics public mailing list <x3d-public@web3d.org><br>
<b>Subject:</b> Re: `ant all` in x3d/stylesheets/java/node (missing jar)<o:p></o:p></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">On 12/24/21 03:01, John Carlson wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt">Note: <b>development</b> file. <o:p>
</o:p></p>
</blockquote>
<p>Exception thrown by running `ant all` in x3d/stylesheets/java/node<o:p></o:p></p>
<p>Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: Invalid setContainerFieldOverride() value='metadata', legal values for MetadataSet are containerField_ALTERNATE_VALUES='"value" "value"'<o:p></o:p></p>
<p>No longer appears (see log below).  I am not sure what what changed.<o:p></o:p></p>
<p>I think what's happening is the X3DJSAIL jar is not being generated in x3d/stylesheets/java/jars.<o:p></o:p></p>
<p>That's the problem!<o:p></o:p></p>
<p>Please ensure that the X3DJSAIL jar is being generated from the stylesheet<o:p></o:p></p>
<p>Thanks!<o:p></o:p></p>
<p>John<o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal" style="margin-bottom:12.0pt">This appears to be relevant from log belowCreateX3dSceneAccessInterfaceJava.xslt:
<br>
<br>
setContainerFieldOverride() value='metadata', legal values for MetadataSet are containerField_ALTERNATE_VALUES='"value" "value"'
<br>
<br>
I haven't worked with this code in a long time, but my guess would be that alternate values of the containerField would be /metadata/ and /value/
<br>
<br>
Here's X3DUOM: <br>
<br>
            <containerField default="value" type="containerFieldChoicesMetadata"/>
<br>
<br>
[snip] <br>
<br>
      <SimpleType name="containerFieldChoicesMetadata" <br>
                  baseType="xs:NMTOKEN" <br>
                  appinfo="containerFieldChoicesMetadata lists the allowed containerField enumeration values for Metadata nodes: &#34;value&#34; if providing information and parent node is MetadataSet collection, otherwise default &#34;metadata&#34; if providing
 information about parent node." <br>
documentation="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#containerField">
<br>
         <enumeration value="metadata" <br>
                      appinfo="this node provides metadata information regarding its parent node."/>
<br>
         <enumeration value="value" <br>
                      appinfo="parent node is MetadataSet, this node is providing information as part of a MetadataSet collection."/>
<br>
      </SimpleType> <br>
<br>
<br>
I'll rebuild X3DJSAIL.  Rebuilding X3DJSAIL did not work. <br>
<br>
MetadataSet.java looks like this: <br>
<br>
342                containerField_ALTERNATE_VALUES = new String[] { "value", "value" }; // type containerFieldChoicesMetadata
<br>
<br>
>From the CreateX3dSceneAccessInterfaceJava.xslt: <br>
<br>
<xsl:text> <br>
        setContainerFieldOverride(""); // ensuring default value used <br>
                containerField_ALTERNATE_VALUES = new String[] { "</xsl:text> <br>
<xsl:value-of select="InterfaceDefinition/containerField/@default"/> <br>
<xsl:text>"</xsl:text> <br>
<br>
I'm lost at this point.  It would seem like you would like to get the values out of the SimpleType enumeration.  Perhaps something is incomplete?
<br>
<br>
<br>
Run (see subject) log: <br>
<br>
[echo] Run test 1: <br>
     [echo] org.web3d.x3d.jsail.CommandLine examples/HelloWorldProgramOutput.x3d -tojs -toFile examples/HelloWorldProgramOutput.Node.js
<br>
     [java] parameter: source file HelloWorldProgramOutput.x3d filesize 23474 bytes
<br>
     [java] CommandLine parameter: "-tojs" for conversion to X3DJSONLD JavaScript source
<br>
     [java] CommandLine parameter: "-toFile" "examples/HelloWorldProgramOutput.Node.js" for result file name root examples/HelloWorldProgramOutput.Node
<br>
     [java] Parsing using Document Object Model (DOM) based X3DLoaderDOM... <br>
     [java] [X3DLoaderDOM] <meta name='info' content='continued development and testing in progress'/>
<br>
     [java] convert to JS JavaScript: <br>
     [java] Note: toFileStylesheetConversion(X3dToNodeJS.xslt) is overwriting prior file examples/HelloWorldProgramOutput.Node.js
<br>
     [java] className='HelloWorldProgramOutput.Node' has illegal character(s) ( -.,;) replaced with '_' underscore character. newClassName='HelloWorldProgramOutput_Node'
<br>
     [java] file conversion successful: HelloWorldProgramOutput.Node.js (37781 bytes)
<br>
     [java] parameter: source file Json.x3d filesize 22435 bytes <br>
     [java] CommandLine parameter: "-tojs" for conversion to X3DJSONLD JavaScript source
<br>
     [java] CommandLine parameter: "-toFile" "examples/Json.js" for result file name root examples/Json
<br>
     [java] Parsing using Document Object Model (DOM) based X3DLoaderDOM... <br>
     [java] Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: Invalid setContainerFieldOverride() value='metadata', legal values for MetadataSet are containerField_ALTERNATE_VALUES='"value" "value"'
<br>
     [java]     at org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:401)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>
     [java] [X3DLoaderDOM] <meta name='info' content='continued development and testing in progress'/>    at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java] <br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>
     [java]     at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:914) <br>
     [java]     at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:234) <br>
     [java] Java Result: 1 <br>
     [java] parameter: source file Quotes.x3d filesize 23111 bytes <br>
     [java] CommandLine parameter: "-tojs" for conversion to X3DJSONLD JavaScript source
<br>
     [java] CommandLine parameter: "-toFile" "examples/Quotes.js" for result file name root examples/Quotes
<br>
     [java] Parsing using Document Object Model (DOM) based X3DLoaderDOM... <br>
     [java] [X3DLoaderDOM] <meta name='info' content='tested sat: name value cannot contain embedded space character'/>
<br>
     [java] Exception in thread "main" org.web3d.x3d.sai.InvalidFieldValueException: Invalid setContainerFieldOverride() value='metadata', legal values for MetadataSet are containerField_ALTERNATE_VALUES='"value" "value"'
<br>
     [java]     at org.web3d.x3d.jsail.X3DConcreteNode.setContainerFieldOverride(X3DConcreteNode.java:401)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:631)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:619)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:490)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.toX3dModelInstance(X3DLoaderDOM.java:453)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:247)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:231)<br>
     [java]     at org.web3d.x3d.jsail.X3DLoaderDOM.loadModelFromFileX3D(X3DLoaderDOM.java:205)<br>
     [java]     at org.web3d.x3d.jsail.CommandLine.run(CommandLine.java:914) <br>
     [java]     at org.web3d.x3d.jsail.CommandLine.main(CommandLine.java:234) <br>
     [java] Java Result: 1 <br>
     [echo] =========== <o:p></o:p></p>
</blockquote>
</div>
</div>
</body>
</html>