<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family: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;}
/* 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;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:453528318;
        mso-list-type:hybrid;
        mso-list-template-ids:-1969571850 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0: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 l0: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 l0: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 l0: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 l0: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 l0: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 l0: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 l0: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;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal>Funny that the terms for loading overlap. For runtime, the ‘loader’ turned the input into a scenegraph. The scene loader would call the file loader to find and load the file, the contents of which were presented to the scene loader that would load the contents into the scenegraph. The scene loader thing was fast and so did not error check stuff, presumed to be validated. </p><p class=MsoNormal>Joe</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Sent: </b>Thursday, April 21, 2022 1:05 PM<br><b>To: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] url MFString handling</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:l0 level1 lfo1'>Let me propose that getting rid of "interpret" would suffice:<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Maybe ‘resolve”? <o:p></o:p></p><p class=MsoNormal>Meaning the file name has been found and delivered to the browser and ready to be loaded into the calling context? <o:p></o:p></p><p class=MsoNormal>Autorefresh sort of complicates things a bit, so now I am looking for something “file found and loaded” Autorefresh must not try to reload if the loaded file content fails. <o:p></o:p></p><p class=MsoNormal>Thanks, <o:p></o:p></p><p class=MsoNormal>Joe<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Sent: </b>Thursday, April 21, 2022 12:46 PM<br><b>To: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] url MFString handling<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Hi Joe,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for your response which makes a lot of sense to me.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> This urls feature really only handles problems with finding the file and delivering contents, not dealing with the validity of actual contents of the file.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Yes, I agree. This role should be clearly pointed out. The first file<o:p></o:p></p><p class=MsoNormal>which can be found and accessed should be considered selected for<o:p></o:p></p><p class=MsoNormal>further processing which then may lead to failure.  Unfortunately, I<o:p></o:p></p><p class=MsoNormal>think currently the spec. language is more vague.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#X3DUrlObject<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>says:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>"All url fields can hold multiple string values. The strings in these<o:p></o:p></p><p class=MsoNormal>fields indicate multiple locations to search for data in the order<o:p></o:p></p><p class=MsoNormal>listed. If the browser cannot locate or interpret the data specified<o:p></o:p></p><p class=MsoNormal>by the first location, it shall try the second and subsequent<o:p></o:p></p><p class=MsoNormal>locations in order until a location containing interpretable data is<o:p></o:p></p><p class=MsoNormal>encountered. X3D browsers only have to interpret a single string. If<o:p></o:p></p><p class=MsoNormal>no interpretable locations are found, the node type defines the<o:p></o:p></p><p class=MsoNormal>resultant default behaviour."<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Let me propose that getting rid of "interpret" would suffice:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>"All url fields can hold multiple string values. The strings in these<o:p></o:p></p><p class=MsoNormal>fields indicate multiple locations to search for data in the order<o:p></o:p></p><p class=MsoNormal>listed. If the browser cannot locate the data specified by the first<o:p></o:p></p><p class=MsoNormal>string, it shall try the second and subsequent locations in order<o:p></o:p></p><p class=MsoNormal>until a location containing data is encountered. X3D browsers only<o:p></o:p></p><p class=MsoNormal>have to load a single location. If no accessible locations are found,<o:p></o:p></p><p class=MsoNormal>the node type defines the resultant default behaviour."<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Happy to iterate if desired,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Andreas<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> As for json and gltf, same thing. Runtime expects the delivered data to  be legal contents as defined by the author. If the data is wrong, like some stuff not matching, then, something else fails, not the loading process.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Thanks for all on this, Andreas,<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Joe<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> From: Andreas Plesch<o:p></o:p></p><p class=MsoNormal>> Sent: Thursday, April 21, 2022 10:06 AM<o:p></o:p></p><p class=MsoNormal>> To: X3D Graphics public mailing list<o:p></o:p></p><p class=MsoNormal>> Subject: Re: [x3d-public] url MFString handling<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Are there suggestions on how to handle back-up "#viewpoint" style urls<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> for Anchor in case Viewpoints with matching def names do not exist ?<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#Anchor<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> paragraph nine explains that in this case:<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> "In this case, if the node derived from X3DViewpointNode is not found,<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> no action occurs on activation."<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> This seems to mean that back-up #viewpoint urls should not be tried so<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> that no action can occur. Would that make the most sense ?<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> I actually cannot think of a use case for back-up #viewpoint urls, so<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> that case may be intentionally left ill defined and open to browser<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> implementations.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Any feedback welcome,<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Andreas<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> On Tue, Apr 19, 2022 at 9:34 PM Andreas Plesch <andreasplesch@gmail.com> wrote:<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > x3dom currently lacks support for back-up urls to use if the first<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > urls do not work. I am trying to add support and wonder how to deal<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > with corner cases.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > The spirit of the spec. here is pretty clear:<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > https://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/networking.html#X3DUrlObject<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > says that a url which cannot be located or if the retrieved data<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > cannot be All url fields can hold multiple string values. The strings in these fields indicate multiple locations to search for data in the order listed. If the browser cannot locate or interpret the data specified by the first location, it shall try the second and subsequent locations in order until a location containing interpretable data is encountered. X3D browsers only have to interpret a single string. If no interpretable locations are found, the node type defines the resultant default behaviour.interpreted should be skipped. Subsequent urls are then used<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > as back-ups.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > Currently, x3dom checks if an inline x3d url can be parsed as xml and<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > if so if it has a Scene element.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > The first corner case happens if there is a X3D element but it does<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > not contain a Scene element. This could be interpreted to mean an<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > empty X3D document with an empty Scene, or that it perhaps should be<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > skipped as not interpretable. I would probably favor skipping as this<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > would normally happen by mistake.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > The second corner case is a Scene element without content. Should such<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > X3D be considered interpretable ?  I think x3dom is currently set up<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > to parse it without error resulting in an empty Scene, probably with<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > default NavigationInfo and Viewpoint. So this could be considered<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > interpretable and not be skipped.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#urls<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > says a result needs to be "legal". But legal is by definition what is<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > provided in the spec., eg. comes down to being interpretable.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > The tooltip at https://www.web3d.org/x3d/content/X3dTooltips.html#Inline.url<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > does not seem to further clarify.<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > Any feedback appreciated,<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > Andreas<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> ><o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > --<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > Andreas Plesch<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> > Waltham, MA 02453<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> --<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Andreas Plesch<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Waltham, MA 02453<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> _______________________________________________<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> x3d-public mailing list<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> x3d-public@web3d.org<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org<o:p></o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>-- <o:p></o:p></p><p class=MsoNormal>Andreas Plesch<o:p></o:p></p><p class=MsoNormal>Waltham, MA 02453<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>