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

Michalis Kamburelis michalis.kambi at gmail.com
Mon May 17 13:15:14 PDT 2021


Questions after (only briefly) reading this thread (I'm very sorry if
I misunderstood something):

- Why are we wondering about SFString reading in X3D XML encoding?
- And why do we want to change and complicate it? :)

In my view, the way how to handle SFString in X3D XML right now is
simple and that is good: The XML attribute content is the value of the
string. The end. There's no interpretation of double-quotes,
backslashes etc. or anything when dealing with SFString. This is also
what X3D browsers already do. Just take the XML attribute value from
your DOM, and there you go, you have your SFString value.

To be clear, we have problems with MFString in X3D XML specification
(which is the point of my
https://github.com/michaliskambi/x3d-tests/wiki/Clarify-the-usage-of-quotes-and-backslashes-for-MFString-and-SFString-in-XML-encoding
), which I believe should be addressed by update to the specification.
Because my tests showed that all X3D browsers are consistent
in how they read SFString and MFString from X3D XML files. That is,
all browsers already agreed that SFString requires a bit different
code than MFString (for SFString, you just take attribute value; for
MFString, you deal with additional quotes and backslahes) and all
browsers behave the same. So we need
to fix the spec, which is a quite confusing, but the existing
implementations have actually already reached a consensus. We just
need to clarify it in the spec.

So I would be a bit opposed to changing SFString logic in X3D XML.
Right now, backslash and double-quote inside SFString in X3D XML are
nothing special, and this is simple enough and already implemented
everywhere. What is the benefit of changing it?

Regards,
Michalis

pon., 17 maj 2021 o 21:17 vmarchetti at kshell.com
<vmarchetti at kshell.com> napisał(a):

>
> This is a set of examples and proposed specification for XML encoding of SFString values in a pattern that is an extension of the VRML encoding of SFString values
>
> [To review: Curly brackets are being used to isolate text; and are not part of the text content. All other characters inside curly brackets are  part of the text content,
> and no escaping or unescaping is done  inside curly brackets ]
>
>
> XML Encoding to X3D values examples
>
>        XML Encoding                          SFString value
> 1.     {<MetadataSet name='items'/>}         invalid encoding
> 2.     {<MetadataSet name='"items"'/>}       {items}
> 3.     {<MetadataSet name='ite"ms'/>}        invalid encoding
> 4.     {<MetadataSet name='\items'/>}        invalid encoding
> 5.     {<MetadataSet name='"\"items"'/>}     {"items}
>
>
> SFString values to XML encodings examples:
>
>         SFString          XML encoding
> 1.     {items}           {<MetadataSet name='"items"'/>}
> 2.     {"items"}         {<MetadataSet name='"\"items\""'/>}
> 3.     {ite"ms}          {<MetadataSet name='"ite\"ms"'/>}
> 4.     {\items}          {<MetadataSet name='"\\items"'/>}
> 5.     {\"items}         {<MetadataSet name='"\\\"items"'/>}
>
> Proposed specification prose:
>
> The determination of an SFString value from the XML encoding in an XML attribute is conducted in two steps:
>
> step 1. From the XML attribute text, determine the string referred to as normalized attribute value by the algorithm in Section 3.3.3 of the XML Recommentations document Edition 1. https://www.w3.org/TR/2008/REC-xml-20081126/#AVNormalize
>
> step 2. The resulting string from step 1 must be a valid VRML lexical element as defined in Annex A (normative) grammar for the Classic VRML Encoding : ISO/IEC 19776-2:2015 . From that document the following appears as the lexical element for an SFString value:
> ----------------------------------------------------------------------
> sfstringValue ::= string ;
> string ::= ".*" ... double-quotes must be \", backslashes must be \\...
> ----------------------------------------------------------------------
>
> If the normalized attribute value determined in step 1 does not match the sfstringValue lexical element then the source XML encoding is invalid. If the normalized attribute value does match the VRML sfstringValue lexical element, then the SFString value is determined by the following procedure
> step 2.1 strip off the leading and trailing quote characters.
> step 2.2 With the remaining text, working from left to right, replace the combination {\\} with single slash {\} and the combination {\"} with quote {"}
>
> The resulting text is the value of the SFString field.
>
>
> The reverse process, constructing a valid XML encoding for a determined SFString value, may be normatively specified as any XML text which gives the correct value on applying steps 1 and 2 above. Informative prose may give algorithms which achieve this end.
>
> Vince Marchetti
>
>
> > On May 16, 2021, at 7:40 PM, vmarchetti at kshell.com wrote:
> >
> > 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
> >
> >
> > _______________________________________________
> > x3d mailing list
> > x3d at web3d.org
> > http://web3d.org/mailman/listinfo/x3d_web3d.org
>
>
> _______________________________________________
> x3d mailing list
> x3d at web3d.org
> http://web3d.org/mailman/listinfo/x3d_web3d.org



More information about the x3d-public mailing list