<div dir="auto">XML Proto “short form” really reminds me of creating new functions/methods or data/class structures. Yes, there’s a danger of overriding in some languages, but many languages provide some kind of warning or failure. Perhaps we should consider an X3D Scene file a “module” and we already have Inline, etc. of such modules. The key here is *versioning* Inlines, PROTOs, erc.</div><div dir="auto"><br></div><div dir="auto">What I haven’t seen is a way to version an X3D module—source code repositories non-withstanding. Yes, the standards have versions. We need a way to include different versions of modules and provide hierarchies of acceptable module versions that work together. Dependency systems are now highly mature. I’ve used Maven, Gradle, Npm, and now there’s a “maturer” TypeScript module system in JSR. Others are familiar with pip and requirements.txt files.</div><div dir="auto"><br></div><div dir="auto">I’m pretty sure that none of VRML, HTML nor XML files have dependency management systems. Maybe it’s time for a standards body to look at that.</div><div dir="auto"><br></div><div dir="auto">I do know that JavaScript is advancing to provide JSON files on import, and the file can be versioned AFAIK, with typical JavaScript package/dependency management. I’ve not used that feature.</div><div dir="auto"><br></div><div dir="auto">Yes, I realize they are a pain in the but, but perhaps we can specify dependencies with Metadata* nodes, instead of coming up with a new standard node. But my preference would be to come up with a MetadataVersion node which uses other Metadata* nodes. Or just claim that Metadata nodes without a name field default to name=“version”. This seems like a very small update to the standard.</div><div dir="auto"><br></div><div dir="auto">So the metadata version attached to a PROTO or Inline could direct a build system to download a file from an web3d or other repository, much like URLs are done today. Often the URL will contain the version. The point is to cache it on the system in case the network goes down! I’m sure we’ve probably all experienced downed networks or airplane rides where you’re missing a file.</div><div dir="auto"><br></div><div dir="auto">So now we come full circle to keep URLs to local files present. But with no way to update all your URLs to the most recent version of the file, just like we have to keep URL versions up to date in HTML files. That’s what package management systems were built to fix.</div><div dir="auto"><br></div><div dir="auto">I’m stuck and out of time for now. Looking for a way out of dependency hell.</div><div dir="auto"><br></div><div dir="auto">John</div><div dir="auto"><br></div><div><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sat, May 10, 2025 at 5:15 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div><div dir="auto">My recall is that new node types were “registered” and one could not declare new PROTOs with the same name. This was problematic when wanting to reload a file. Perhaps some sort of versioning is indicated.</div><div dir="auto"><br></div><div dir="auto">As for Schema, both in JSON and XML, couldn’t we create a barebones schema or X3DUOM from a ProtoDeclare? What additional field attributes might be required?</div><div dir="auto"><br></div><div dir="auto">Then the task would be modifying the Schema DOM or JavaScript Schema object? Obviously kind of dangerous, but no more dangerous than web components?</div><div dir="auto"><br></div><div dir="auto">Hmm!</div></div><div></div><div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, May 10, 2025 at 11:38 AM Brutzman, Donald (Don) (CIV) via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">
<div dir="ltr">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Thanks for the interesting, innovative discussion. Excerpting the example:</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:"Segoe UI Web (West European)","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;font-size:12pt">
<span style="font-family:"Segoe UI Web (West European)","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;background-color:rgb(255,255,255)"><a href="https://create3000.github.io/x_ite/tutorials/creating-new-node-types/#using-prototyped-nodes" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169LPlnkOWA2443507b-7427-05c8-57fa-df9850ce535b" style="margin:0px;text-align:left;font-family:"Segoe UI Web (West European)","Segoe UI",-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",sans-serif;background-color:rgb(255,255,255)" target="_blank">https://create3000.github.io/x_ite/tutorials/creating-new-node-types/#using-prototyped-nodes</a></span></div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
_________________________</div>
<div style="text-align:left;text-indent:0px;line-height:1.2;margin:2rem 0px 1rem;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
XML Encoding</div>
<div style="margin:0.5rem 0px 1.2em;border-radius:10px">
<div style="text-align:left;text-indent:0px;margin-right:0px;margin-left:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(52,52,60)">
<button style="box-sizing:border-box;border-radius:10px;margin:0px;outline:none;border:1px solid rgba(0,0,0,0);background-image:none;color:rgb(52,52,60);height:2.25rem;width:2.25rem">
</button></div>
<table style="text-align:left;text-indent:0px;box-sizing:border-box;border-collapse:collapse;border-spacing:0px">
<tbody>
<tr>
<td style="text-align:left;text-indent:0px;padding:5px;box-sizing:border-box;color:rgb(104,113,122)">
<pre style="margin:0px;display:block;font-family:monospace"><div style="text-align:right;text-indent:0px;line-height:1.4rem;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:11pt;color:rgb(0,0,0)"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">1
2
3
4
5
6
7
8
9
</code></div></pre>
</td>
<td style="text-align:left;text-indent:0px;padding:5px;box-sizing:border-box">
<pre style="margin:0px;display:block;font-family:monospace"><div style="text-align:left;text-indent:0px;line-height:1.4rem;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:11pt;color:rgb(0,0,0)"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace"><!--</code><b style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace"> Official Syntax </code></b><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">-->
<ProtoInstance name='BouncingBall'>
<fieldValue name='cycleInterval' value='2'/>
<fieldValue name='bounceHeight' value='3'/>
</ProtoInstance>
<!-- </code><b style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">Short Syntax </code></b><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">-->
<BouncingBall
cycleInterval='2'
bounceHeight='3'/>
</code></div></pre>
</td>
</tr>
</tbody>
</table>
</div>
<div style="text-align:left;text-indent:0px;line-height:1.2;margin:2rem 0px 1rem;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Classic VRML Encoding</div>
<div style="margin:0.5rem 0px 1.2em;border-radius:10px">
<div style="text-align:left;text-indent:0px;margin-right:0px;margin-left:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(52,52,60)">
<button style="box-sizing:border-box;border-radius:10px;margin:0px;outline:none;border:1px solid rgba(0,0,0,0);background-image:none;color:rgb(52,52,60);height:2.25rem;width:2.25rem">
</button></div>
<table style="text-align:left;text-indent:0px;box-sizing:border-box;border-collapse:collapse;border-spacing:0px">
<tbody>
<tr>
<td style="text-align:left;text-indent:0px;padding:5px;box-sizing:border-box;color:rgb(104,113,122)">
<pre style="margin:0px;display:block;font-family:monospace"><div style="text-align:right;text-indent:0px;line-height:1.4rem;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:11pt;color:rgb(0,0,0)"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">1
2
3
4
</code></div></pre>
</td>
<td style="text-align:left;text-indent:0px;padding:5px;box-sizing:border-box">
<pre style="margin:0px;display:block;font-family:monospace"><div style="text-align:left;text-indent:0px;line-height:1.4rem;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:11pt;color:rgb(0,0,0)"><code style="font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace">BouncingBall {
cycleInterval 2.0
bounceHeight 3.0
}
</code></div></pre>
</td>
</tr>
</tbody>
</table>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
_________________________</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
One drawback with the "short" XML syntax is that it will not pass XML DOCTYPE or XML Schema validation, although it still must conform to XML well-formed rules. Additional tool-specific capabilities can check for such correctness during parsing, of course.
Avoiding XML validation relaxes quality assurance (QA) for the entire scene, not just that prototype instance, and so use of the short form should be considered carefully.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Of course there is much merit too, not least of which are readability and consistency with other XML-encoded nodes.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
As it turns out, now is a good time to consider such a change to the X3D Standards suite. We have highly mature documents defining X3D encodings using XML and ClassicVRML syntax. Conceivably a "short" form for ProtoInstance will carry over satisfactorily
for JSON and other encodings as well, when we get to them this fall.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
If X_ITE and X3DOM already handle this form, and if Castle Model Viewer (Castle Game Engine) is also supportive, I'm not yet seeing any blockers to adoption. Further implementation and evaluation of course will be useful</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Reference and specific clause that would need modification:</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)"><b style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-1v4.0-WD1/Part01/X3D_XML.html" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA4fa20d17-89bf-3b2b-6883-024038370573" style="margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)" target="_blank">X3D
XML Encoding 4.0</a></b></span><b style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"> </b>revision 19776-1</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">4.3.3.2 ProtoInstance node and fieldValue statement syntax</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-1v4.0-WD1/Part01/concepts.html#ProtoInstanceAndFieldValueStatement" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA3a5e3b4d-3e78-f35d-b331-a933bee7580e" target="_blank" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-1v4.0-WD1/Part01/concepts.html#ProtoInstanceAndFieldValueStatement</a></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><br>
</div>
</div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Probably no changes needed:</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<ul style="margin-top:0px;margin-bottom:0px;list-style-type:disc">
<li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;margin:0px;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)"><b style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-2v4.0-WD1/Part02/X3D_ClassicVRML.html" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWAee3f7b67-25b4-ba9a-1344-2437cac95823" style="margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)" target="_blank">X3D
Classic VRML Encoding 4.0</a></b></span><b style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"> </b>revision 19776-2</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">4.3.3.2 Prototype instances and field value initialization syntax</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-2v4.0-WD1/Part02/concepts.html#ProtoInstanceAndFieldValueStatement" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA7d84e734-10c2-4386-6bd9-95461bd96297" target="_blank" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19776-2v4.0-WD1/Part02/concepts.html#ProtoInstanceAndFieldValueStatement</a></div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><br>
</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><span style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)"><b style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/Architecture.html" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWAb9ca5ffe-b023-b0b4-2382-7069bbcaf042" style="margin:0px;font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;color:rgb(13,88,246)" target="_blank">X3D
Architecture 4.1</a></b></span>, revision 19775-1</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">4.4.4 Prototype semantics</div>
</li><li style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/concepts.html#PrototypeSemantics" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA8b85223f-3981-f9ca-0e7b-2ba324624917" target="_blank" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD//Part01/concepts.html#PrototypeSemantics</a></div>
</li></ul>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Thanks for careful consideration of this potential capability. All feedback welcome.</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
Have fun with X3D extensibility! 🙂</div>
<div style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif;font-size:11pt;color:rgb(0,0,0)">
<br>
</div>
<div id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169Signature">
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">all the best, Don</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">--</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Don Brutzman Naval Postgraduate School, Code USW/Br <a href="mailto:brutzman@nps.edu" target="_blank" style="font-family:"Courier New"">brutzman@nps.edu</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149</span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt">X3D graphics, virtual worlds, navy robotics <a href="https://faculty.nps.edu/brutzman" target="_blank" style="font-family:"Courier New"">https://faculty.nps.edu/brutzman</a></span></p>
<p style="margin:0in;font-family:Calibri,sans-serif;font-size:11pt"><span style="font-family:"Courier New";font-size:9pt"> </span></p>
</div>
<div id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169appendonsend"></div>
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<hr style="display:inline-block;width:98%">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<b style="font-family:Calibri,Arial,Helvetica,sans-serif">From:</b> x3d-public on behalf of Holger Seelig via x3d-public<br>
<b style="font-family:Calibri,Arial,Helvetica,sans-serif">Sent:</b> Saturday, May 10, 2025 1:13 AM<br>
<b style="font-family:Calibri,Arial,Helvetica,sans-serif">To:</b> X3D<br>
<b style="font-family:Calibri,Arial,Helvetica,sans-serif">Cc:</b> Holger Seelig<br>
<b style="font-family:Calibri,Arial,Helvetica,sans-serif">Subject:</b> Re: [x3d-public] Simplifying ProtoInstance nodes </div></div><div dir="ltr">
<div style="font-family:Calibri,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div>This is already possible if you use the „short syntax“ of a proto instance:</div>
<div><br>
</div>
<div><a href="https://create3000.github.io/x_ite/tutorials/creating-new-node-types/#using-prototyped-nodes" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA7faffb5e-ba8d-82d5-ab0e-6d89dbd65ef1" target="_blank">https://create3000.github.io/x_ite/tutorials/creating-new-node-types/#using-prototyped-nodes</a></div>
<div><br>
</div>
<div>You can use this in X_ITE, but also in X3DOM.</div>
<div><br>
</div>
<div>Best regards,</div>
<div>Holger</div>
<div><br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
--</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
Holger Seelig</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
Leipzig, Germany</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
<br>
</div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
<a href="https://create3000.github.io/x_ite/" target="_blank">https://create3000.github.io/x_ite/</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
<a href="https://patreon.com/X_ITE" target="_blank">https://patreon.com/X_ITE</a></div>
<div style="direction:ltr;text-align:left;text-indent:0px;color:rgb(0,0,0)">
<br>
</div>
<div><br>
</div>
<div><br>
</div>
<blockquote>
<div>Am 10.05.2025 um 05:55 schrieb John Carlson via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>>:</div>
<div><br>
</div>
<div style="direction:ltr">My thought is to replace “ProtoInstance” tags with “MenuItem” tags, and fieldValue statements with attributes, but I’ve not done that before. My goal is to make the model more accessible to screen readers.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">Any examples are welcome.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">See attached link and model.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">John</div>
<div><br>
</div>
<div style="direction:ltr">---------- Forwarded message ---------<br>
From: <b>John Carlson</b> <<a href="mailto:yottzumm@gmail.com" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWAcd8a00ee-f042-648c-6f64-178e28a78ac1" target="_blank">yottzumm@gmail.com</a>><br>
Date: Thu, Mar 6, 2025 at 4:35 PM<br>
Subject: Latest cleaned Jin FACS (needs metadata)<br>
To: Don Brutzman <<a href="mailto:brutzman@nps.edu" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWAd9904356-09a4-cdf5-3976-fb8473c5af2e" target="_blank">brutzman@nps.edu</a>>, Joe D Williams <<a href="mailto:joedwil@earthlink.net" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA5d445d7c-5882-aea3-c31c-4327a8b07653" target="_blank">joedwil@earthlink.net</a>></div>
<div><br>
<br>
</div>
<div style="direction:ltr">Attached.</div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">And:</div>
<div style="direction:ltr"><a href="https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d" id="m_4797929342064471347m_-7711686135142192605m_-2417259004063514169OWA2973ab79-c2b9-cc34-00e8-32a45e78126c" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/coderextreme/ci2had/refs/heads/main/resources/CleanedYouClocks.x3d</a></div>
<div style="direction:ltr"><br>
</div>
<div style="direction:ltr">John</div>
<div><CleanedYouClocks.x3d>_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></div>
</blockquote>
<div><br>
</div>
</div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>
</div>
</blockquote></div></div>