<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><p style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">To add fuel to the fire, X3D 4.1 now defines a DESCRIPTION string for IMPORT and EXPORT that must be parsed, currently for Classic Encoding. This description overlaps significantly with appInfo or documentation attributes.</p><p style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">On the other hand, it has not yet been specified how this DESCRIPTION should be encoded in JSON and XML, but it will certainly be similar.</p><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#IMPORTStatement">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#IMPORTStatement</a><p><font color="#000000"><span style="caret-color: rgb(0, 0, 0);"></span></font></p><div>
<meta charset="UTF-8"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#EXPORTStatement">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/networking.html#EXPORTStatement</a></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Best regards,</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><br></div></div></div></div></div></div></div></div></div></div></div></div></div><div>
<meta charset="UTF-8"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>—<br>Holger Seelig<br>Leipzig, Germany<br><br>holger.seelig@yahoo.de<br>https://create3000.github.io/x_ite/<br>https://patreon.com/X_ITE<br></div><div><br></div></div><br class="Apple-interchange-newline">
</div>
<div><br><blockquote type="cite"><div>Am 21.08.2025 um 12:42 schrieb Michalis Kamburelis via x3d-public <x3d-public@web3d.org>:</div><br class="Apple-interchange-newline"><div><div>Thank you -- but that's not yet enough :)<br><br>The fact that appinfo is SFString says what information it can carry<br>(OK, 1 string), but not yet how it's encoded. If "appinfo" would be a<br>regular field inside a regular X3D node, it would be all we need...<br>alas, it is not.<br><br>As it stands, "appinfo" is part of "ProtoDeclare" and "field" in<br>prototype interface -- these are special concepts with special syntax,<br>in both X3D XML and classic encodings.<br><br>- For the X3D 3.3 classic encoding, this is the relevant section:<br>https://www.web3d.org/documents/specifications/19776-2/V3.3/Part02/concepts.html#PROTOStatementSyntax<br><br>- For the X3D 3.3 XML encoding, this is the relevant section:<br>https://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#PrototypeAndFieldDeclarationSyntax<br><br>I think we need "X3D 4.0 classic encoding" and "X3D 4.0 XML encoding"<br>specs and they should extend above sections to include how the<br>additional X3D 4.0 information ("appinfo", "documentation") is<br>encoded.<br><br>The XML encoding is kind of obvious in this case (as "ProtoDeclare"<br>and "field" are XML elements, so "appinfo" and "documentation" can be<br>just XML attributes), so it's not a big question. But classic encoding<br>of them is really unknown, at least to me :)<br><br>Regards,<br>Michalis<br><br>wt., 19 sie 2025 o 18:59 John Carlson via x3d-public<br><x3d-public@web3d.org> napisał(a):<br><blockquote type="cite"><br>What I meant to say is appinfo is an SFString, but I don’t know if that’s enough information for the classic encoding. Anyone?<br><br>John<br><br>On Tue, Aug 19, 2025 at 11:17 AM John Carlson <yottzumm@gmail.com> wrote:<br><blockquote type="cite"><br>Sorry, I the previous message contained 2 large images.<br><br>The direct links are:<br><br>https://www.web3d.org/x3d/content/X3dTooltips.html#ProtoDeclare.appinfo<br><br><br>https://www.web3d.org/x3d/content/X3dTooltips.html#field.appinfo<br><br>John<br><br>---------- Forwarded message ---------<br>From: John Carlson <yottzumm@gmail.com><br>Date: Tue, Aug 19, 2025 at 10:54 AM<br>Subject: Re: [x3d-public] appinfo attribute/field<br>To: Michalis Kamburelis <michalis.kambi@gmail.com><br>CC: Extensible 3D (X3D) Graphics public discussion <x3d-public@web3d.org><br><br><br>Michalis:<br><br>Tooltips may help again here, they are SFStrings. I don’t know the meaning of CDATA or #IMPLIED though, see attached images. The issue you mentioned contains direct links, FMI.<br><br>Thanks,<br><br>John<br><br><br>On Tue, Aug 19, 2025 at 10:46 AM Michalis Kamburelis <michalis.kambi@gmail.com> wrote:<br><blockquote type="cite"><br>Let me add another question to this thread: Where is the specification<br>of how to *encode* appinfo information in the X3D classic encoding?<br><br>To add some background/context to this question:<br><br>- Thanks to John pointing out in<br>https://github.com/castle-engine/castle-engine/issues/688 , in CGE we<br>lack support for "appinfo" attribute in ProtoDeclare / field.<br><br>- I found a mention of new "appinfo" and "documentation" in the<br>abstract X3D 4.0 spec:<br>https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/concepts.html#PROTOinterfacedeclsemantics<br>,"""Prototype and field declarations may optionally include appinfo<br>functional descriptions (i.e., tooltip summary) and a documentation<br>url providing a link to further related information."""<br><br>- However, as the above is the "abstract" part of the spec ("X3D<br>Abstract : Architecture and base components") so it naturally doesn't<br>say how these "appinfo" and "documentation" are actually encoded. The<br>official XML encoding and classic encoding specs are now at 3.3<br>version -- so they don't mention how to encode this new X3D 4.0<br>feature.<br><br>- For XML encoding, it seems straightforward, judging from the<br>testcase in https://github.com/castle-engine/castle-engine/issues/688<br>. They are just XML attributes.<br><br> <ProtoDeclare appinfo='...' name='...' ...><br><br> <field appinfo='...' ...>'<br><br> OK, so XML encoding is simple enough:)<br><br>- We need to know how to encode this information in X3D classic, to<br>enable lossless conversion between X3D encodings (classic, XML etc.).<br><br>- If there is a spec, and/or a clear example of how to do this in X3D<br>classic encoding, please point me to it :) Thank you!<br><br>Regards,<br>Michalis<br></blockquote></blockquote><br>_______________________________________________<br>x3d-public mailing list<br>x3d-public@web3d.org<br>http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br></blockquote><br>_______________________________________________<br>x3d-public mailing list<br>x3d-public@web3d.org<br>http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br></div></div></blockquote></div><br></body></html>