<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<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 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;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
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.EmailStyle19
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@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:98137358;
mso-list-template-ids:-890715622;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:260534043;
mso-list-template-ids:-2125296092;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:484980097;
mso-list-template-ids:-1196368798;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l3
{mso-list-id:542523102;
mso-list-type:hybrid;
mso-list-template-ids:864815596 -1074500584 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l3:level1
{mso-level-start-at:0;
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 l3: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 l3: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 l3: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 l3: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 l3: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 l3: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 l3: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 l3: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;}
@list l4
{mso-list-id:731385750;
mso-list-template-ids:1258733052;}
@list l4:level1
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:1.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level3
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:1.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level4
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:2.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:2.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level6
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:3.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level7
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:3.5in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:4.0in;
mso-level-number-position:left;
text-indent:-.25in;}
@list l4:level9
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:4.5in;
mso-level-number-position:left;
text-indent:-.25in;}
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>Glad to hear that this is yielding for you, John.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Recommendation regarding spaces in file names: don’t do that! Too prone to failure, often inexplicably and undiagnosably within tool chains.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>CamelCaseFileNaming.x3d works well, human readable, and searchable too.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Full set of our best-practice naming conventions follow. All improvements always welcome.<o:p></o:p></p><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in'><p class=MsoNormal style='border:none;padding:0in'><o:p> </o:p></p></div><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l3 level1 lfo1'>X3D Scene Authoring Hints: Naming Conventions<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l3 level1 lfo1'>These hints provide a collection of style guidelines, authoring tips and best practices to improve the quality, consistency and maintainability of Extensible 3D (X3D) Graphics models.<o:p></o:p></li><li class=MsoListParagraph style='margin-left:0in;mso-list:l3 level1 lfo1'>https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions<o:p></o:p></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'><a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions"><span style='font-family:"Segoe UI Emoji",sans-serif'>🔖</span></a> <u>Naming Conventions</u><o:p></o:p></span></b></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>Clarity is essential for building a meaningful model. Naming conventions are appropriate for file names, DEF node identifiers and USE node references, prototype names, and more.<o:p></o:p></span></p><ul type=circle><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Using clear and consistent names for node names and DEF labels greatly improves the clarity of how a scene work. In effect, names can make the purpose of a scene self-documenting.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>CamelCaseNaming: capitalize each word, never use abbreviations, strive for clarity, and be brief but complete.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>s</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>tartWithLowerCaseLetter when defining field names (i.e. attributes) within Prototypes and Scripts.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Ensure consistent capitalization throughout. Of note: the Windows operating system is not case sensitive, but http servers are. Thus mismatched capitalization can hide target files, and this error only is revealed when placed on a server.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Avoid embedding spaces in file names since they can be poorly (or inconsistently) handled by operating systems and tools.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Avoid use of underscores since they look like whitespace when part of a URL address. Occasionally it is acceptable to use the underscore character ("<b>_</b>") to indicate subscripts for definition of a mathematical variable.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Avoid use of hyphens ("<b>-</b>") since these are erroneously turned into subtraction operators when converted into class or variable names.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Combined: avoid use of whitespace characters, 'apostrophes' and "quotation marks" in file names since they can cause lots of problems for tools and search, especially when going from one operating system to another.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Naming conventions can apply to .x3d files and reference files, as well as Prototype names, field names, and DEF/USE names. Starting names similarly (e.g. NavigationWalk, NavigationFly) can help alphabetize with indexing in the pretty-print HTML documentation, thus improving readability and searchability.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Portability of each name is important especially since X3D models may get converted into a variety of programming languages and file formats.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>There are multiple requirements for characters allowed in DEF/USE names, and so using the strictest subset is useful.<o:p></o:p></span></li><ul type=circle><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level2 lfo2'><span style='font-size:10.0pt;font-family:"Courier New"'>.x3d, .x3db</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> encodings: must follow <a href="https://www.w3.org/TR/xml/#NT-Name" target="_blank">XML requirements</a> for ID/IDREF data type.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level2 lfo2'><span style='font-size:10.0pt;font-family:"Courier New"'>.x3dv, .wrl</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> encodings: must follow <a href="https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/grammar.html#Nodes" target="_blank">ClassicVRML Grammar requirements</a> for Id/IdFirstChar, which essentially match except for some special characters.<o:p></o:p></span></li></ul><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Most restrictive and most interoperable guidance regarding choice of characters in names: can start with letter or underscore character, but not a number or a colon. Can then include letters, numbers, hyphen, underscore, or period characters. This interoperability is important so that files can be converted equivalently between encodings without validation problems.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Use lower case for filename extensions. Examples: .png .jpg .txt. Although Windows systems are insensitive to upper/lower case, any differences will cause "file not found" failures on Unix systems (Apple, Linux) and http servers.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Be consistent. When multiple files pertain to a single entity, start with the same name so that they will alphabetize adjacent to each other in the catalog and the directory listings. Examples: <a href="https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorPrototype.x3d" target="_blank">WaypointInterpolatorPrototype.x3d</a> <a href="https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorExample.x3d" target="_blank">WaypointInterpolatorExample.x3d</a> <a href="https://savage.nps.edu/Savage/Tools/Animation/WaypointInterpolatorExample.png" target="_blank">WaypointInterpolatorExample.png</a><o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Similarly good choices for directory and subdirectory names can help keep scene names terse.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Portability is important. <a href="https://www.w3.org/TR/xml11/#sec-suggested-names" target="_blank">Suggestions for XML Names</a> in W3C XML 1.1 Recommendation describes best practices for construction of XML names and provides detailed character-set guidance. It also notes Names which are nonsensical, unpronounceable, hard to read, or easily confusable with other names should not be employed.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo2'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>Avoid file names which are identical to an X3D node name, since name collisions can thwart interoperability when converting among various programming languages.<o:p></o:p></span></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'><a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NameTyping"><span style='font-family:"Segoe UI Emoji",sans-serif'>🔖</span></a> <i>Typing of name attributes</i>:<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>Small variations in SFString types for </span><span style='font-size:10.0pt;font-family:"Courier New";color:black'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'> attributes can occur in order to best achieve strict validation of content.<o:p></o:p></span></p><ol start=1 type=a><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3'><b><span style='font-size:10.0pt;font-family:"Courier New"'>type="SFString"</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> (meaning no restrictions) is applied to </span><span style='font-size:10.0pt;font-family:"Courier New"'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> attribute for </span><span style='font-size:10.0pt;font-family:"Courier New"'>meta</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> statement, matching HTML. However, note that <a href="https://www.dublincore.org/documents/dcmi-terms/#section-1" target="_blank">Dublin Core Metadata Initiative (DCMI)</a> requires name to be a token appendable to a URI, so normal expectation for typical names is NMTOKEN.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3'><b><span style='font-size:10.0pt;font-family:"Courier New"'>type="SFString"</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> (meaning that embedded space characters are allowed) is applied to </span><span style='font-size:10.0pt;font-family:"Courier New"'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> attribute for <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/core.html#METAStatement" target="_blank">meta</a> statement, Core component <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/core.html#X3DMetadataObject" target="_blank">X3DMetadataObject</a> Metadata nodes, and also applied to CADGeometry component <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/componentsCADGeometry.html#X3DProductStructureChildNode" target="_blank">X3DProductStructureChildNode</a> CAD nodes. This provides wider latitude when matching terminology structures from other metadata nomenclatures. <i>Warning:</i> note however that the included whitespace characters might be inconsistent. A name value containing whitespace might not validate or match other corresponding values.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3'><b><span style='font-size:10.0pt;font-family:"Courier New"'>type="NMTOKEN"</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> (meaning that no whitespace characters are allowed) is applied to </span><span style='font-size:10.0pt;font-family:"Courier New"'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> attribute for </span><span style='font-size:10.0pt;font-family:"Courier New"'>component</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> and </span><span style='font-size:10.0pt;font-family:"Courier New"'>unit</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> statements, simpleType SFString enumeration names, and prototype definitions (ProtoDeclare, ExternProtoDeclare, ProtoInstance, field and fieldValue).<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3'><b><span style='font-size:10.0pt;font-family:"Courier New"'>type="NMTOKEN"</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> (meaning that no whitespace characters are allowed) is applied to </span><span style='font-size:10.0pt;font-family:"Courier New"'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> attribute for <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/hanim.html" target="_blank">Humanoid Animation (HAnim)</a> nodes. HAnim node names have a prefix if multiple Humanoids appear in a scene, e.g. </span><span style='font-size:10.0pt;font-family:"Courier New"'>"joe_r_upperarm"</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>. Note that an HAnimSite and HAnimDisplacer name starts with one of the <a href="https://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0_featurePointNameValues.html" target="_blank">HAnim featurePointNameValues</a>. HAnimSite must end in '_tip' or '_view' or '_pt' suffix. HAnimDisplacer can end in '_feature' or '_action' or '_config' suffix.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo3'><b><span style='font-size:10.0pt;font-family:"Courier New"'>type="NMTOKEN"</span></b><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> (meaning that no whitespace characters are allowed) is applied to </span><span style='font-size:10.0pt;font-family:"Courier New"'>name</span><span style='font-size:13.5pt;font-family:"Times New Roman",serif'> attribute for <a href="https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/shaders.html#X3DVertexAttributeNode" target="_blank">X3DVertexAttributeNode</a> nodes (FloatVertexAttribute, Matrix3VertexAttribute, Matrix4VertexAttribute) that define Shader interface data structures. This provides maximum strictness supporting a variety of shader programming languages which typically do not support whitespace in names.<o:p></o:p></span></li></ol><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><i><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>Naming of multiple similar files:</span></i><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>Naming multiple similar files can be difficult, especially when creating autogenerated files. One suggested approach is to concatenate the following name components as appropriate. Considering order and alphabetization can help. Avoid abbreviations since they complicate search.<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>For example you might separate components by period characters, since underscores disappear as part of a url and since hyphens will break across a line.<o:p></o:p></span></p><ul type=disc><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>ConsistentDescriptiveName<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>.PhysicalLocation (for example <i>.HawaiiKauai</i>)<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>.SequenceNumber<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>. 21xx Month01 (or timestamp, for sortability)<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo4'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>.ext (filename extension)<o:p></o:p></span></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><i><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'>General notes on naming conventions:</span></i><span style='font-size:13.5pt;font-family:"Times New Roman",serif;color:black'><o:p></o:p></span></p><ul type=disc><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo5'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>These conventions are suitable for X3D scenes, XML tagset design, and corresponding Java classes.<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo5'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>These conventions match the node and field naming conventions in the <a href="https://www.web3d.org/x3d/specifications">X3D Specification</a> (and most XML).<o:p></o:p></span></li><li class=MsoNormal style='color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo5'><span style='font-size:13.5pt;font-family:"Times New Roman",serif'>(Ironic) Success Metric: when is a name successful?<br>Answer: when no one has to discuss that name any more, it is simply understood.<o:p></o:p></span></li></ul><div style='mso-element:para-border-div;border:none;border-bottom:solid windowtext 1.5pt;padding:0in 0in 1.0pt 0in'><p class=MsoNormal style='border:none;padding:0in'><o:p> </o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>HaveFunWithX3D! 8)<o:p></o:p></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>all the best, Don<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:9.0pt;font-family:"Courier New"'>-- <o:p></o:p></span></p><p class=MsoNormal><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=MsoNormal><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=MsoNormal><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=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> x3d-public <x3d-public-bounces@web3d.org> <b>On Behalf Of </b>John Carlson<br><b>Sent:</b> Saturday, August 19, 2023 9:50 AM<br><b>To:</b> X3D Graphics public mailing list <x3d-public@web3d.org><br><b>Subject:</b> [x3d-public] Fwd: xslt3 bombs on spaces. Java Saxon is ok<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div><div><div><p class=MsoNormal>Saxon Java rules!<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>If anyone can figure out how to use spaces in file names to xslt3, you deserve respect!<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>I'm still hoping for a XML -> JSON solution for the web!<o:p></o:p></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>John<o:p></o:p></p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>../../../node_modules/.bin/xslt3 -xsl:/c/x3d-code/<a href="http://www.web3d.org/x3d/stylesheets/X3dToJson.xslt" target="_blank">www.web3d.org/x3d/stylesheets/X3dToJson.xslt</a> -s:../data/lily 7_3_animate.x3d '-o:../data/lily 7_3_animate.new2.json'<o:p></o:p></p></div><div><p class=MsoNormal>Invalid command line input: 7_3_animate.x3d<o:p></o:p></p></div><div><p class=MsoNormal>Usage: see <a href="https://nam10.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.saxonica.com%2Fsaxon-js%2Fdocumentation%2Findex.html%23!nodejs%2Fcommand-line&data=05%7C01%7Cbrutzman%40nps.edu%7C7766c635834b447ffde808dba0d4827c%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638280606826753368%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=DDxMF%2FBghT1O51jRFeJjdpvSrn6kZ6Cp7m81ePjb3Kw%3D&reserved=0" target="_blank">http://www.saxonica.com/saxon-js/documentation/index.html#!nodejs/command-line</a><o:p></o:p></p></div><div><p class=MsoNormal>Options available: -?, -co, -export, -im, -it, -json, -master, -nogo, -ns, -o, -relocate, -s, -t, -tp, -xp, -xsl<o:p></o:p></p></div><div><p class=MsoNormal>Use -XYZ:? for details of option XYZ<o:p></o:p></p></div><div><p class=MsoNormal>Params:<o:p></o:p></p></div><div><p class=MsoNormal> param=value Set stylesheet string parameter<o:p></o:p></p></div><div><p class=MsoNormal> +param=filename Set stylesheet document parameter<o:p></o:p></p></div><div><p class=MsoNormal> ?param=expression Set stylesheet parameter using XPath<o:p></o:p></p></div><div><p class=MsoNormal> !param=value Set serialization parameter<o:p></o:p></p></div><div><p class=MsoNormal> (bindings and values containing punctuation may need to be quoted in some command shells,<o:p></o:p></p></div><div><p class=MsoNormal> e.g. in PowerShell: "{NS}key=val" ?range="1 to 20" )<o:p></o:p></p></div></div></div></div></div></div></body></html>