<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Have you checked in recently?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I can’t find normalizeCommentWhitespace.  I can find it in your web documentation, but not in x3d/stylesheets.  Hmm.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Thursday, January 25, 2018 2:31 AM<br><b>To: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>RE: X3dToJson.xslt still removing spaces from comments...fixed,please test</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Okay, now you need to XML output to pay attention to normalizeCommentWhitespace.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:brutzman@nps.edu">Don Brutzman</a><br><b>Sent: </b>Wednesday, January 24, 2018 2:11 AM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: X3dToJson.xslt still removing spaces from comments... fixed,please test<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>OK.  Have added property normalizeCommentWhitespace and corresponding methods.  Modified X3dToJson.xslt to support this parameter, default is to normalize comment whitespace.  Also added support to CommentsBlock.toStringX3D() and toStringVRML() methods.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I don't think it is quite practical to modify the pretty-print HTML, since comments come out as plain text and not PRE-formatted text.  Shifting that around would be... uh, less pretty.  8)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Note that this properties work once per file/stream creation, and cannot be turned on/off in the middle of a file/stream output.  The original comment is retained in memory, comment values in the serialization output reflects the property setting.  So programmers are not losing any significant whitespace text within CommentsBlock objects.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Smoke tests passed, update deployed.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/specifications/java/X3dJavaSceneAuthoringInterface.html#UtilityMethods<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html#isNormalizeCommentWhitespace--<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As ever, further testing welcome to see if all code paths are working OK.  Again thanks for sticking with this one John, it is a useful refinement.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 1/23/2018 11:25 AM, John Carlson wrote:<o:p></o:p></p><p class=MsoNormal>> I'm pretty sure it's XML -> JSON and XML -> HTML, as previously mentioned.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> On Jan 23, 2018 10:49 AM, "Don Brutzman" <brutzman@nps.edu <mailto:brutzman@nps.edu>> wrote:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>     Good point.  Probably there are other use cases too.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>     So maybe we would do better to NOT require normalization of whitespace in comments, but keep it as an option.  That is do-able in the code without much fuss.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>     In which case we are back to your original diff observation: what part of the existing code is normalizing whitespace in your comments?  DOM loader, perhaps?  If so, is there a similar switch we might apply to that library?<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>     On 1/22/2018 12:22 PM, John Carlson wrote:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         A case where I wouldn’t want to normalize in comments is if someone is created a multicolumn table, or a hierarchy. Perhaps normalize spaces, but not whitespace.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         John<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986 <https://go.microsoft.com/fwlink/?LinkId=550986>> for Windows 10<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         *From: *Don Brutzman <mailto:brutzman@nps.edu <mailto:brutzman@nps.edu>><o:p></o:p></p><p class=MsoNormal>>         *Sent: *Monday, January 22, 2018 11:30 AM<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         *To: *John Carlson <mailto:yottzumm@gmail.com <mailto:yottzumm@gmail.com>><o:p></o:p></p><p class=MsoNormal>>         *Cc: *x3d-public@web3d.org <mailto:x3d-public@web3d.org> <mailto:x3d-public@web3d.org <mailto:x3d-public@web3d.org>><o:p></o:p></p><p class=MsoNormal>>         *Subject: *Re: X3dToJson.xslt still removing spaces from comments. Seethisoutput from Java compared to JavaScript and JavaScript output<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         so in that case: i recommend we clarify in X3D Canonical Form that whitespace in comments is normalized.  in which case we are done with that code.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         our alternative to permit irregular whitespace in comments may not be consistently implementable, and certainly is confusing/deceiving when applying security measures.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         i will enter a specification comment and the working group can later discuss at the appropriate time.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         On 1/22/2018 3:40 AM, John Carlson wrote:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Then by all means, make the X3D and JSON output have the same normalization<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986 <https://go.microsoft.com/fwlink/?LinkId=550986>> for Windows 10<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > *From: *Don Brutzman <mailto:brutzman@nps.edu <mailto:brutzman@nps.edu>><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > *Sent: *Monday, January 22, 2018 12:01 AM<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > *To: *John Carlson <mailto:yottzumm@gmail.com <mailto:yottzumm@gmail.com>><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > *Cc: *x3d-public@web3d.org <mailto:x3d-public@web3d.org> <mailto:x3d-public@web3d.org <mailto:x3d-public@web3d.org>><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > *Subject: *Re: X3dToJson.xslt still removing spaces from comments. See thisoutput from Java compared to JavaScript and JavaScript output<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > X3D Canonical Form says that whitespace is normalized, and X3DJSAIL output attempts to follow that.  The first of the following rules can be interpreted that way, though I'm not seeing explicit mention of comments.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > X3D Compressed Binary Encoding: 4.2.3 X3D canonical form<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > http://www.web3d.org/documents/specifications/19776-3/V3.1/Part03/concepts.html#X3DCanonicalForm <http://www.web3d.org/documents/specifications/19776-3/V3.1/Part03/concepts.html#X3DCanonicalForm><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > ====================<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > a. Whitespace rules:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >       All whitespace characters are converted to a normalized (single-occurrence) blank character.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >       Whitespace includes comma separators between all MF-type array values, including MFString arrays.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >       All literal characters within an SFString value are retained verbatim.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >       All literal characters within MFString array values are retained verbatim.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > ====================<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > I thought another prior requirement might be in XML Recommendation or XML Infoset, but didn't find it...<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > XML Information Set (Second Edition)<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > http://www.w3.org/TR/xml-infoset <http://www.w3.org/TR/xml-infoset><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Extensible Markup Language (XML) 1.0 (Fifth Edition)<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > https://www.w3.org/TR/xml<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Not sure where the excess whitespace is getting stripped, didn't find anything like that in the CommentsBlock source.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Wouldn't surprise me if DOM loader was doing that, in which case it can't be "fixed" or retained any differently - confirmation or further sleuthing welcome..<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > In practice I have seen tools normalize whitespace.  Seems like a good practice, you don't want invisible characters (or tool idiosyncrasies independently deciding that strictly equivalent information in a model might vary in terms of whitespace.  That's bad for digital signature, encryption, security back doors, etc.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > So, if anything, I'd lean towards explicitly requiring the normalization of whitespace in comments for X3D Canonical Form.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > On 1/20/2018 10:29 PM, John Carlson wrote:<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > See subject.  Excess spaces are being removed from comments in JSON output from X3DJSAIL.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > $ diff HelloWorldProgramOutput.Nashorn.x3d HelloWorldProgramOutput.Nashorn.js.new.x3d<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 73c73<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <                     <!-- Comment example A, plain quotation marks:  He said, "Immel did it!" --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > ---<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >                     <!-- Comment example A, plain quotation marks: He said, "Immel did it!" --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 112a113<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 230a232<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 248,252c250<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success: x3dModel.findNodeByDEF(DeclarativeAppearanceExample) = <Appearance DEF='DeclarativeAppearanceExample'/> i.e.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > < <Appearance DEF='DeclarativeAppearanceExample'><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <     <!- - DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance - -><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <     <ProtoInstance DEF='MyMaterialModulator' name='MaterialModulator' containerField='material'/><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > < </Appearance> --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > ---<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: x3dModel.findNodeByDEF(DeclarativeAppearanceExample) = <Appearance DEF='DeclarativeAppearanceExample'/> i.e. <Appearance DEF='DeclarativeAppearanceExample'> <!- - DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance - -> <ProtoInstance DEF='MyMaterialModulator' name='MaterialModulator' containerField='material'/> </Appearance> --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 255c253<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoDeclare")  found --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > ---<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoDeclare") found --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > 279,284c277,282<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success:  AnchorObject.isNode()=true,            siteAnchor.isNode()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success:  AnchorObject.isStatement()=false,        siteAnchor.isStatement()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success:   ROUTEObject.isNode()=false,   orbitPositionROUTE.isNode()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success:   ROUTEObject.isStatement()=true, orbitPositionROUTE.isStatement()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test success: CommentsBlock.isNode()=false,           testComments.isNode()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > <         <!-- Test failure: CommentsBlock.isStatement()=true,      testComments.isStatement()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  > ---<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: AnchorObject.isNode()=true, siteAnchor.isNode()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: AnchorObject.isStatement()=false, siteAnchor.isStatement()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: ROUTEObject.isNode()=false, orbitPositionROUTE.isNode()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: ROUTEObject.isStatement()=true, orbitPositionROUTE.isStatement()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test success: CommentsBlock.isNode()=false, testComments.isNode()=false --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  >  >         <!-- Test failure: CommentsBlock.isStatement()=true, testComments.isStatement()=true --><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           >  ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > all the best, Don<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > --<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Don Brutzman  Naval Postgraduate School, Code USW/Br brutzman@nps.edu <mailto:brutzman@nps.edu><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 <tel:%2B1.831.656.2149><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           > X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman <http://faculty.nps.edu/brutzman><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>           ><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         all the best, Don<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         -- <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         Don Brutzman  Naval Postgraduate School, Code USW/Br brutzman@nps.edu <mailto:brutzman@nps.edu><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 <tel:%2B1.831.656.2149><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>         X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman <http://faculty.nps.edu/brutzman><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>     all the best, Don<o:p></o:p></p><p class=MsoNormal>>     -- <o:p></o:p></p><p class=MsoNormal>>     Don Brutzman  Naval Postgraduate School, Code USW/Br brutzman@nps.edu <mailto:brutzman@nps.edu><o:p></o:p></p><p class=MsoNormal>>     Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149 <tel:%2B1.831.656.2149><o:p></o:p></p><p class=MsoNormal>>     X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman <http://faculty.nps.edu/brutzman><o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don<o:p></o:p></p><p class=MsoNormal>-- <o:p></o:p></p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu<o:p></o:p></p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<o:p></o:p></p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>