<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">[Comments embedded]<br>
      <br>
      <br>
    </div>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="MS Exchange Server version
        rmj.rmm.rup.rpr">
      <title>RE: SFString/MFString Proposal [was: Agenda for X3D WG Open
        Meeting ...]</title>
      <!-- Converted from text/rtf format -->
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Hi,</font></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Leonard put
            forward a proposal regarding SFString / MFString, during
            which he cited an example which I reproduce below:</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName' value='Single value'
            /></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName' value="Single value"
            /></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName'></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value>Single value</value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <name>SimpleName</name></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value>Single value</value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <name>SimpleName</name></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New"><![CDATA[</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Single
            value]]></value></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New"><![CDAT</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">A</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">[First element</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">]]></value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <name>SimpleName</name></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New"><![CDATA[Second element</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">]]></value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <name><![CDATA["C'mplx \Element]]></name></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value>Easy String</value</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New"><![CDAT</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">A</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">[A string with
            "'s ''s &'s and <> in it.]]></value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"><br>
          <font face="Calibri">I'd like to look more closely at each of</font></span><span
          lang="en-gb"> <font face="Calibri">this</font></span><span
          lang="en-gb"><font face="Calibri"> to gain further insights,
            before introducing an example of my own.</font></span><span
          lang="en-gb"><font face="Calibri"> But before we start, let's
            remind ourselves that in the MetadataString node, the "</font></span><span
          lang="en-gb"><font face="Calibri">name" field is of type
            SFString, and the "value" field is of type MFString.</font></span><span
          lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><b><u><font face="Calibri">Version</font></u></b></span><span
          lang="en-gb"><b><u><font face="Calibri"> 1:</font></u></b></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName' value='Single value'
            /></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">This is not
            valid X3D in accordance with the current standard ISO/IEC
            19776-1:2015</font></span><span lang="en-gb"> <font
            face="Calibri">for two reasons:</font></span></p>
      <p dir="LTR"><span lang="en-gb">        <font face="Calibri">a)
            The value for the  "name" field does not conform because it
            has single quotes.</font></span></p>
    </blockquote>
    <br>
    Actually, it is not valid X3D V3.x because the string value is not
    enclosed in double quotes ("). The valid X3D V3.x fragment would be<br>
    <br>
    <blockquote><tt>name='"SimpleName"'</tt><br>
    </blockquote>
    See second sentence of
<a class="moz-txt-link-freetext" href="http://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/EncodingOfFields.html#SFString">http://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/EncodingOfFields.html#SFString</a><br>
    <br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb">        <font face="Calibri">b)
            The value for the "value" field does no</font></span><span
          lang="en-gb"><font face="Calibri">t conform because it has
            only one set of single quotes.</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><b><u><font face="Calibri">Version</font></u></b></span><span
          lang="en-gb"><b><u><font face="Calibri"> 2:</font></u></b></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName' value="Single value"
            /></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">This is not
            valid X3D in accordance with the current standard ISO/IEC
            19776-1:2015</font></span><span lang="en-gb"> <font
            face="Calibri">for two reasons:</font></span></p>
      <p dir="LTR"><span lang="en-gb">        <font face="Calibri">a)
            The value for the  "name" field does not conform because it
            has single quotes.</font></span></p>
    </blockquote>
    <br>
    See above<br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb">        <font face="Calibri">b)
            The value for the "value" field does no</font></span><span
          lang="en-gb"><font face="Calibri">t conform because it has
            only one set of</font></span><span lang="en-gb"> <font
            face="Calibri">double</font></span><span lang="en-gb"><font
            face="Calibri"> quotes.</font></span></p>
    </blockquote>
    <br>
    Not really. For a single element MFString and SFString look the
    same. The value needs to be enclosed in double quotes. This
    (double-quoted string) is the value of the attribute, so it needs to
    be enclosed in any of the XML quoting characters (even though the
    spec is wrong on this point). This additional quoting may cause
    characters in the attribute's value to change representation (e.g.,
    " to &quot;)<br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">The
            divergence</font></span><span lang="en-gb"> <font
            face="Calibri">for both of these versions</font></span><span
          lang="en-gb"><font face="Calibri"> is simply in the quotation
            marks. If we assume that V4.0</font></span><span
          lang="en-gb"> <font face="Calibri">is more liberal in
            accepting th</font></span><span lang="en-gb"><font
            face="Calibri">ese</font></span><span lang="en-gb"><font
            face="Calibri"> variation, then</font></span><span
          lang="en-gb"> <font face="Calibri">there is no significant
            impact on tools an</font></span><span lang="en-gb"><font
            face="Calibri">d encoding transformations. We can also ask w</font></span><span
          lang="en-gb"><font face="Calibri">hat would the DOM look like
            if this was part of an embedded X3D scene in an HTML syntax
            web page</font></span><span lang="en-gb"><font
            face="Calibri">.</font></span><span lang="en-gb"><font
            face="Calibri"> There would be a single MetadataString
            element with attributes of “name” a</font></span><span
          lang="en-gb"><font face="Calibri">nd “value”.</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><b><u><font face="Calibri">Version</font></u></b></span><span
          lang="en-gb"></span><span lang="en-gb"><b><u> <font
                face="Calibri">3</font></u></b></span><span lang="en-gb"><b><u><font
                face="Calibri">:</font></u></b></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            <MetadataString name='SimpleName'></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">        
            <value>Single value</value></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">   
            </MetadataString></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Now we have a
            major divergence from the existing standard. The “value”
            field h</font></span><span lang="en-gb"><font face="Calibri">as
            been encoded as child content, and not an attribute.</font></span><span
          lang="en-gb"> <font face="Calibri">An HTML/XML parser would
            expect that both “MetadataString</font></span><span
          lang="en-gb"><font face="Calibri">”</font></span><span
          lang="en-gb"><font face="Calibri"> and</font></span><span
          lang="en-gb"> <font face="Calibri">“value” are to be loaded
            as DOM elements. The “MetadataString” element has the</font></span><span
          lang="en-gb"> <font face="Calibri">attribute “name”. The
            “value” element i</font></span><span lang="en-gb"><font
            face="Calibri">s a child element of “MetadataString”. While,
            of course, a parser could be written to correctly interpret
            the intent, this does complicate it.</font></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Now let’s
            consider a</font></span><span lang="en-gb"><font
            face="Calibri"> validation tool such as the XML schema. Here
            is a</font></span><span lang="en-gb"><font face="Calibri">n
            extract from V3.3 for the MetadataString node, with <</font></span><span
          lang="en-gb"><font face="Calibri">xs:annotation> elements
            removed for ease of readability</font></span><span
          lang="en-gb"><font face="Calibri">:</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb">       </span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"> <font size="2" face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:element</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">MetadataString</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexType</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                       </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexContent</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:extension</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> base</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">X3DNode</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               
                 </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attribute</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> type</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">SFString</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               
                 </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attribute</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">reference</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> type</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">SFString</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               
                 </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attribute</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">value</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> type</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">MFString</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               
                 </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attribute</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">containerField</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> type</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">metadataContainerFieldValues</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> default</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">metadata</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">/</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:extension</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                       </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexContent</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexType</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">       </span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"> <font size="2" face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:element</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">In this case,
            the content model is inherited from X3DNode, so this is also
            reproduced:</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb">       </span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"> <font size="2" face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexType</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> name</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">X3DNode</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> abstract</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">true</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:sequence</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                       </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:element</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> ref</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">IS</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> minOccurs</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">0</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">                       </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:group</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> ref</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">ChildContentModelCore</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> minOccurs</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">0</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">/</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:sequence</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attributeGroup</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> ref</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">DEF_USE</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">               </span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"> <font size="2"
            face="Consolas" color="#0000FF"><</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:attributeGroup</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#FF0000"> ref</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">="</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#000000">globalAttributes</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">"/></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb">       </span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"> <font size="2" face="Consolas" color="#0000FF"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#800000">xs:complexType</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Consolas" color="#0000FF">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Consider the
            complexity of writing a schema that would not only validate
            versions 1 and 2, but also version 3. Version 3 does not
            have the attribute</font></span><span lang="en-gb"><font
            face="Calibri"> “value”. You will also notice that X3DNode
            does not have the attribute “metadata”. In XML terms these
            are not attributes.</font></span><span lang="en-gb"> <font
            face="Calibri">Instead, the loader has to read the child
            content and then, when the node is instantiated, add the
            child content to the</font></span><span lang="en-gb"><font
            face="Calibri"> appropriate xFNode field, depending on the
            “containerField” value for the child node content. Clearly,
            this type of approach will cause significant problems</font></span><span
          lang="en-gb"><font face="Calibri"> for X3D validation.</font></span></p>
    </blockquote>
    <br>
    While I am not an expert at validation, I don't think this is really
    an issue. To illustrate this I wish to point out the W3C validator
    for HTML and XHTML. These support the (structured) HTML content for
    tables, lists, definitions, and many other nested tags. I fail to
    see why making things clearer to read makes it harder to validate. <br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Further, how
            d</font></span><span lang="en-gb"><font face="Calibri">oes
            this approach relate to transformation from, say, the XML
            encoding to the Classic VRML encoding? How does it affect
            the Compressed binary encoding?</font></span><span
          lang="en-gb"> <font face="Calibri">Clearly considerable
            further</font></span><span lang="en-gb"><font face="Calibri">
            work is needed to consider the feasibility of this alter</font></span><span
          lang="en-gb"><font face="Calibri">nate encoding with respect
            to the overall X3D product content.</font></span></p>
    </blockquote>
    <br>
    My underlying motivation is that a single-nested structure in XML is
    equivalent to an array. This makes the connection between the
    human-readable expression of the content (e.g., XML) and its
    internal form easier and more obvious. Once stored internally,
    exporting to other representations should be as easy (and perhaps
    easier) than reading in those other representations.<br>
    <br>
    <br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb"><b><u><font face="Calibri">Version</font></u></b></span><span
          lang="en-gb"></span><span lang="en-gb"><b><u> <font
                face="Calibri">4 and subsequent</font></u></b></span><span
          lang="en-gb"><b><u><font face="Calibri">:</font></u></b></span></p>
      <p dir="LTR"><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">These are
            variants of Version 3, so the same general comments apply.</font></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">Now, I
            introduce another</font></span><span lang="en-gb"><font
            face="Calibri"> simple</font></span><span lang="en-gb"><font
            face="Calibri"> example.</font></span><span lang="en-gb"><font
            face="Calibri"> Consider a</font></span><span lang="en-gb"><font
            face="Calibri"> Material node, encoded in the style of
            version 3.</font></span></p>
      <p dir="LTR"><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">    <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Material</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">ambientIntensity</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">0.2</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">ambientIntensity</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">diffuseColor</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">>0.</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">8 0.8 0.8</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">diffuseColor</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">emissive</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Color>0 0
            0</</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">emissive</font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><font size="2"
            face="Courier New">Color></font></span><span lang="en-gb"></span><span
          lang="en-gb"></span><span lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">shininess</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">0</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">.2</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">shininess</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">specular</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Color</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">0 0 0</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">specular</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Color</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">         <</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">transparency</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">0</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New"></</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">transparency</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">    </</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">Material</font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><font size="2" face="Courier New">></font></span><span
          lang="en-gb"></span><span lang="en-gb"></span><span
          lang="en-gb"><br>
        </span><span lang="en-gb"></span></p>
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">If this style
            of encoding is to be acceptable for xFString fields,</font></span><span
          lang="en-gb"> <font face="Calibri">the presumable it should
            also be acceptable for all other field types.</font></span></p>
    </blockquote>
    <br>
    <br>
    Note that the discussion topic was specifically for strings. I very
    explicitly did not discuss this type of example. While Roy's
    reasoning seems reasonable, it can lead to some unpractical examples
    (e.g., transparency). I just addressed strings because I feel that
    X3D needs to allow the use of CDATA to make things easier to handle.
    <br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:007c01d2c987$f8f8f980$eaeaec80$@ntlworld.com">
      <p dir="LTR"><span lang="en-gb"><font face="Calibri">My final
            thought for this posting is about CSS</font></span><span
          lang="en-gb"><font face="Calibri">, which as a general</font></span><span
          lang="en-gb"><font face="Calibri"> topic has not so far
            received much attention.</font></span><span lang="en-gb"></span><span
          lang="en-gb"> <font face="Calibri">What is the im</font></span><span
          lang="en-gb"><font face="Calibri">pact on CSS for this</font></span><span
          lang="en-gb"><font face="Calibri"> style of encoding, compared
            to</font></span><span lang="en-gb"> <font face="Calibri">the
            current style using attributes</font></span><span
          lang="en-gb"><font face="Calibri">?</font></span><span
          lang="en-gb"></span></p>
    </blockquote>
    <br>
    The concept of CSS is to allow the separation of content from style.
    In the example just above, the (existing) fields of a Material node
    are separated out into children. It is possible to argue that the
    these fields are the content of a Material node. But from the
    perspective of a Shape node, all material fields are styles to the
    defined geometry. A bit more deeper thinking on this topic before
    any decision can be approached.<br>
    <br>
    <br>
    <div class="moz-signature">-- <br>
      <font class="tahoma,arial,helvetica san serif" color="#333366">
        <font size="+1"><b>Leonard Daly</b></font><br>
        3D Systems & Cloud Consultant<br>
        LA ACM SIGGRAPH Chair<br>
        President, Daly Realism - <i>Creating the Future</i>
      </font></div>
  </body>
</html>