<div dir="auto">I am seeing this way to add schema to ajv.   This would probably require a second pass on validating JSON.</div><div dir="auto"><br></div><div dir="auto">If *ProtoDeclare could be identified earlier, I could add schema based on *ProtoDeclare.  DOM validation will take place after conversion to DOM, so adding schema would be unnecessary.</div><div dir="auto"><br></div><div dir="auto">All more reason to just use DOM validation, hmm!</div><div dir="auto"><br></div><div dir="auto">Can we get rid of the requirement for JSON schema validation, and use XML schema validation?</div><div dir="auto"><br></div><div dir="auto">I’m still thinking of hooks into ajv that will add schema.</div><div dir="auto"><br></div><div><div>    const Ajv = require('ajv');<br>    const ajv = new Ajv();<br><br>    // Base schema<br>    const personSchema = {<br>        type: 'object',<br>        properties: {<br>            firstName: { type: 'string' },<br>            lastName: { type: 'string' }<br>        }<br>    };<br><br>    // Schema extending the base schema<br>    const employeeSchema = {<br>        type: 'object',<br>        allOf: [<br>            { $ref: '#/personSchema' }, // Reference the base schema<br>            {<br>                properties: {<br>                    jobTitle: { type: 'string' }<br>                }<br>            }<br>        ]<br>    };<br>    ajv.addSchema(personSchema, 'personSchema');<br>    ajv.addSchema(employeeSchema, 'employeeSchema');<br><br>    // Validate data<br>    const employeeData = {<br>        firstName: 'John',<br>        lastName: 'Doe',<br>        jobTitle: 'Engineer'<br>    };<br>    const validate = ajv.compile(employeeSchema); // Compile once<br>    const valid = validate(employeeData); // Validate<br>    console.log(valid); // Output: true<br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Sat, May 10, 2025 at 10:13 PM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto">I’m not seeing any obvious JavaScript XSD DOM validators?</div><div dir="auto"><br></div><div dir="auto">Sure, lots of string validation, but I have DOM in JavaScript, converted from JSON.</div><div dir="auto"><br></div><div dir="auto">Such a thing does not exist or is an ActiveX thingy or something?</div><div dir="auto"><br></div><div dir="auto">I’ll try AI next.</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 9:58 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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 dir="auto">In X3DJSONLD.js,  i can add short-form expansion in CreateElement(), essentially creating ProtoInstance elements from *ProtoDeclare recognized elements.  Perhaps I can capture undefined elements from Ajv schema validation instead of validating the unmodified JSON.  So I’m hoping there a validation hook for undefined elements.  Maybe check your XML validators as well.</div><div dir="auto"><br></div><div dir="auto">CreateElement code:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/coderextreme/X3DJSONLD/blob/bd5c620a44997d300e1a751fd9f873deaf9fe403/src/main/node/X3DJSONLD.js#L302" target="_blank">https://github.com/coderextreme/X3DJSONLD/blob/bd5c620a44997d300e1a751fd9f873deaf9fe403/src/main/node/X3DJSONLD.js#L302</a></div><br></div><div dir="auto"><br></div><div dir="auto">Ultimately, you probably want to validate the modified long-form DOM before translating to many bindings using the rest of X3DJSONLD.  But only if you know you have short-form in the original code.</div><div dir="auto"><br></div><div dir="auto">So, in CreateElement, I will store ProtoDeclare/ProtoInterface and ExternProtoDeclare names and field names and default values.  When I expand the short form, I will validate short-form names and values against ProtoInterface fields and types.</div><div dir="auto"><br></div><div dir="auto">This all leads towards DOM validation in X3DJSONLD.js, so perhaps I’ll bag JSON schema altogether.</div><div dir="auto"><br></div><div dir="auto">If someone knows XML validation tools in JavaScript, clue me in!</div><div dir="auto"><br></div><div dir="auto">When that’s done, I’ll work on x3dschema:</div><div dir="auto"><br></div><div dir="auto">CreateElement in Java:</div><div dir="auto"><br></div><div dir="auto"><div><a href="https://github.com/coderextreme/x3dschema/blob/269135736fdbe61e8b21c48fe17fbeaa8a7f93c1/X3DJSONLD.java#L73" target="_blank">https://github.com/coderextreme/x3dschema/blob/269135736fdbe61e8b21c48fe17fbeaa8a7f93c1/X3DJSONLD.java#L73</a></div><div dir="auto"><br></div><div dir="auto">Ditto, but this time, no need to validate with Ajv.</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 9:16 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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 dir="auto">I’ll work on a P<span style="font-family:-apple-system,helveticaneue">rotoInstance </span>short-form to long-form in X3DJSONLD, then test ajv JSON schema validation.</div><div dir="auto"><br></div><div dir="auto">I’ll come up with something for JSON.  Someone else should do XML.   I will probably put the JSON expansion in X3DJSONLD.java (my x3dschema repository), so JSON can be validated with Java and XML schema easily.   I’m guessing something similar can be done for X3DLoaderDOM.java with a bit more work for X3DJSAIL.  I probably won’t do stylesheet code for X3DJSAIL.</div><div dir="auto"><br></div><div dir="auto">Maybe in the next few days.</div><div dir="auto"><br></div><div dir="auto">The nice thing about XML is that you can construct DOM that doesn’t pass schema, change the DOM, then validate it.</div><div dir="auto"><br></div><div dir="auto">Whoever wants to do SAX or StAX, be my guest!</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 8:27 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">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 dir="auto"><div>
<div>
<p dir="auto">Validate short-form Protos in X3D by converting short form to ProtoInstance form when loading.</p>
</div>
</div>No new schema necessary.</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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-2417259004063514169OWA3a5e3b4d-3e78-f35d-b331-a933bee7580e" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif" target="_blank">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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-2417259004063514169OWA7d84e734-10c2-4386-6bd9-95461bd96297" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif" target="_blank">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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-2417259004063514169OWA8b85223f-3981-f9ca-0e7b-2ba324624917" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif" target="_blank">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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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" style="font-family:"Courier New"" target="_blank">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" style="font-family:"Courier New"" target="_blank">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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-2417259004063514169OWAd9904356-09a4-cdf5-3976-fb8473c5af2e" target="_blank">brutzman@nps.edu</a>>, Joe D Williams <<a href="mailto:joedwil@earthlink.net" id="m_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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_5443322998689036525m_-5221296218039862218m_4773945684309219774m_-3074273298652934663m_-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>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>
</blockquote></div></div>