<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:"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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.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;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>There was an issue with my quoting where I left | &quot; | unquoted.  Should have been | \&quot; |. Thanks everyone.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</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:michalis.kambi@gmail.com">Michalis Kamburelis</a><br><b>Sent: </b>Wednesday, April 26, 2017 10:57 AM<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] MFString quoting [was: interesting sample]</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>2017-04-26 16:10 GMT+02:00 Andreas Plesch <andreasplesch@gmail.com>:</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> On Apr 25, 2017 11:16 PM, "Michalis Kamburelis"</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> So</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>>   " ' MFString or SFString ? ' "</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> is either</p><p class=MsoNormal>> - an incorrect MFString (you cannot use ' to delimit parts within MFString)</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Yes, you are right, that is incorrect. But that brings up SFStrings.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> When not used as part of an MFString, they still have the double quote</p><p class=MsoNormal>> requirement while XML allows both single or double quotes.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Indeed, the specification sentence</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>""""</p><p class=MsoNormal>  SFString specifies a single string encoded as a sequence of UTF-8</p><p class=MsoNormal>octets enclosed in double quotes (e.g., "string").</p><p class=MsoNormal>""""</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>could be changed to</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>""""</p><p class=MsoNormal>  SFString specifies a single string encoded as a sequence of UTF-8</p><p class=MsoNormal>octets. It is simply the value of an XML attribute. As such, following</p><p class=MsoNormal>XML rules, it can be surrounded either in single-quotes (apostrophes)</p><p class=MsoNormal>or double quotes.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The following examples of an SFString are all valid:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>"string"</p><p class=MsoNormal>'string'</p><p class=MsoNormal>"string &quot;with some quotes inside&quot;"</p><p class=MsoNormal>'string &quot;with some quotes inside&quot;'</p><p class=MsoNormal>'string "with some quotes inside"'</p><p class=MsoNormal>""""</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> So, I would suggest to allow single quotes as delimiters in MFStrings as</p><p class=MsoNormal>> well although I realize that places an additional burden on the x3d parser.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> In the end, to me, allowing balanced pairs of single or double quotes</p><p class=MsoNormal>> interchangeably anywhere is the simplest rule. Backslash escaping for</p><p class=MsoNormal>> printing is required in any case.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I would find it useful too. But this is a different change to the</p><p class=MsoNormal>spec, and one that is not so 100% secure.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>1. In a perfect world, it should be possible to add this possibility</p><p class=MsoNormal>to the specification, because</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>  " 'one' 'two' "</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>is an an invalid MFString now. So the new X3D XML readers could see</p><p class=MsoNormal>that "oh, it starts with an apostrophe, it must be an MFString using</p><p class=MsoNormal>that new feature of enclosing parts in apostrophes". Unfortunately,</p><p class=MsoNormal>because of a large number of incorrect X3D examples on the Internet,</p><p class=MsoNormal>most X3D XML right now check whether the string starts and ends with</p><p class=MsoNormal>double-quotes, and if not -- they assume it's an invalid MFString, and</p><p class=MsoNormal>parse it as SFString, and use the contents as an MFString with count =</p><p class=MsoNormal>1.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>  <Text string=" 'blahblah' " /></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>right now causes the display of apostrophes (and a warning in the</p><p class=MsoNormal>console). After your change, it would be displayed without</p><p class=MsoNormal>apostrophes.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>True, it will probably not affect much scenes in practice... Still,</p><p class=MsoNormal>it's not a 100% secure change. Unlike the initial idea of only fixing</p><p class=MsoNormal>the spec to conform to XML to allow the whole XML attribute be</p><p class=MsoNormal>surrounded by ' or " .</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>2. As Yves notes, the current rule is also consistent with classic</p><p class=MsoNormal>encoding (and VRML). Right now, my MFString handling in view3dscene is</p><p class=MsoNormal>just firing up a VRML lexer to interpret the MFString attribute</p><p class=MsoNormal>contents. With your change, we either also change the classic</p><p class=MsoNormal>encoding, or we need a little different code to handle MFString in XML</p><p class=MsoNormal>encoding.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Neither 1. or 2. are a large disadvantage in my eyes, so I'm not</p><p class=MsoNormal>refusing this change. I'm only saying that it's a little more</p><p class=MsoNormal>intrusive change than the simpler plan to "just fix the specification</p><p class=MsoNormal>to allow what XML allows".</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>> Backslash escaping for printing is required in any case.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> I don't understand that part.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If I may, I think I can explain what Andres meant:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You must already use double backslashes to get a single visible</p><p class=MsoNormal>backslash in MFString. After the Andreas proposed change, you would</p><p class=MsoNormal>need to protect single-quotes (apostrophes) by backslashes, but that's</p><p class=MsoNormal>not a problem (it does not cause an incompatibility for correct X3D</p><p class=MsoNormal>scenes), because all the backslashes in current X3D scenes are either</p><p class=MsoNormal>doubled (to mean a single backslash) or they are used to protect the</p><p class=MsoNormal>following character.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Consider this example:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>  <Text string="&quot;here is \'text surrounded in apostrophes\'&quot;" /></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Right now it's either incorrect (if you don't think that backslash</p><p class=MsoNormal>before apostrophe is valid) or correct (and no backslashes will be</p><p class=MsoNormal>visible).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>After the proposed Andreas change, this example will always be correct</p><p class=MsoNormal>(and no backslashes will be visible), since then the apostrophes will</p><p class=MsoNormal>need to be (in some situations) protected. So, no compatibility was</p><p class=MsoNormal>broken.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Regards,</p><p class=MsoNormal>Michalis</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>x3d-public mailing list</p><p class=MsoNormal>x3d-public@web3d.org</p><p class=MsoNormal>http://web3d.org/mailman/listinfo/x3d-public_web3d.org</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>