[x3d-public] X3D WG May 14 minutes : SFString in XML encoding examples

vmarchetti at kshell.com vmarchetti at kshell.com
Sun May 16 16:40:27 PDT 2021

This refers to item 3 of the minutes of the May 14 X3D WG meeting  minutes.

At the May 14 X3D WG meeting we again addressed the long-standing problem of defining the XML encoding of the SFString data type in node fields, particulalarly when the SFString containg quote characters.  It was proposed  to do two related tasks:
1. Generate examples of XML encoding which clearly illustrate the correct encoding of these edge cases
2. Write specification prose text which can be unambiguously interpreted by developers in their implementations, to ensure interoperability.

A perennial issue in these discussions is that we're reasoning about text, in text. We usually use the quote characters to  isolate the text we are writing about -- that doesn't work here, because the quotes are critical part of our discussion. For that reason, in the scope of this document, I  use curly brackets to set off text examples. In the X3D specification the curly bracket characters cause no controversy, and I will not use any examples where curly brackets are part of the text values. So, if I were to say the the value of an X3D field of type SFString is {"Hello"}, I mean at least two things:
1. If this value gets put in an MFString value and passed to the X3D Text node, it will be rendered as 7 character glyphs.
2. In any language binding, the value is a 7 character string in the native string representation of that language.

I propose that our examples should illustrate both issues the X3D implementors face: reading an XML encoding of an SFString value and determing the correct data for their implementation environment, and generating a correct XML encoding of an arbitrary SFString value. As Michalis K has pointed, there are relatively few usages of SFString has a field type, but one important one is as the name field  in the Metadata nodes. So I will propose a set of decoding examples for determining the correct value of the name field in the  XML encodings of an empty MetadataSet node. The result SFString  for these examples should either be the value of the name field or the assertion that the XML encoding itself is not a syntactically valid encoding.

        XML Encoding                          SFString value
 1.     {<MetadataSet name='items'/>}         ---
 2.     {<MetadataSet name='"items"'/>}       ---
 3.     {<MetadataSet name='ite"ms'/>}        ---
 4.     {<MetadataSet name='\items'/>}        ---
 5.     {<MetadataSet name='"\"items"'/>}     ---

The second set of examples should illustrate the encoding problem: To specify a correct XML encoding of the empty MetadataSet whose name field has the specified value. The XML encoding has multiple correct solutions because the XML format itself provides multiple representations  of the same XML attribute.

         SFString          XML encoding
 1.     {items}           ---
 2.     {"items"}         ---
 3.     {ite"ms}          ---
 4.     {\items}          ---
 5.     {\"items}         ---

A final part of this project is to prepare normative  prose that determines these example patterns and  can be applied to the general case.

Vince Marchetti

More information about the x3d-public mailing list