<div dir="auto"><div>It looks DOMParser.parseFromString should not unescape quoted escaped characters in a cdata section. DOMParser is probably rigorously speced, so it would be possible to find out the correct behavior.</div><div dir="auto"><br></div><div dir="auto">Or does the unescaping already happen during string concatenation in the previous line ?<br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On Feb 27, 2017 9:16 PM,  <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br type="attribution"><blockquote class="m_-7447684827912959163quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div lang="EN-US" link="blue" vlink="#954F72"><div class="m_-7447684827912959163m_-1448259743610553844WordSection1"><p class="MsoNormal">Actually, it still could be in the client code.  Will have to develop some tests.</p><div class="m_-7447684827912959163quoted-text"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John</p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10</p><p class="MsoNormal"><u></u> <u></u></p></div><div style="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:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a><br><b>Sent: </b>Monday, February 27, 2017 9:09 PM</p><div class="m_-7447684827912959163quoted-text"><br><b>To: </b><a href="mailto:andreasplesch@gmail.com" target="_blank">Andreas Plesch</a>; <a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br></div><b>Subject: </b>RE: flaw in CDATACreateFunction in X3DJSONLD (from Andreas Plesch)<p></p></div><div class="m_-7447684827912959163elided-text"><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I was wrong.  It was in my serverside code.  So now, the serverside code looks like this:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">        X3DJSONLD.setCDATACreateFuncti<wbr>on(function(document, element, str) {<u></u><u></u></p><p class="MsoNormal">                // for script nodes<u></u><u></u></p><p class="MsoNormal">                var child = document.createCDATASection(st<wbr>r.replace(/\n'/g, "\\n'"));<u></u><u></u></p><p class="MsoNormal">                element.appendChild(child);<u></u><u></u></p><p class="MsoNormal">        });<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">FYI for those creating CDATA sections from JSON on the serverside.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986" target="_blank">Mail</a> for Windows 10<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></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:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a><br><b>Sent: </b>Monday, February 27, 2017 8:46 PM<br><b>To: </b><a href="mailto:andreasplesch@gmail.com" target="_blank">Andreas Plesch</a>; <a href="mailto:x3d-public@web3d.org" target="_blank">X3D Graphics public mailing list</a><br><b>Subject: </b>flaw in CDATACreateFunction in X3DJSONLD (from Andreas Plesch)<u></u><u></u></p></div><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">function CDATACreateFunction(document, element, str) {<u></u><u></u></p><p class="MsoNormal">        var domParser = new DOMParser();<u></u><u></u></p><p class="MsoNormal">        var cdataStr = '<script> <![CDATA[ ' + str + ' ]]> </script>'; // has to be wrapped into an element<u></u><u></u></p><p class="MsoNormal">        var scriptDoc = domParser .parseFromString (cdataStr, 'application/xml');<u></u><u></u></p><p class="MsoNormal">        var cdata = scriptDoc .children[0] .childNodes[1]; // space after script is childNode[0]<u></u><u></u></p><p class="MsoNormal">        element .appendChild(cdata);<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">If calling CDATACreateFunction(document, element, object[key].join("\r\n")+"\r\n<wbr>");  like this, you may run into some difficulty when the DOM gets written out to XML or perhaps placed in a web page.  Namly, this:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">"#sourceText":[<u></u><u></u></p><p class="MsoNormal">"ecmascript:",<u></u><u></u></p><p class="MsoNormal">"function set_position (value)",<u></u><u></u></p><p class="MsoNormal">"{",<u></u><u></u></p><p class="MsoNormal">"\tholdPosition=value;",<u></u><u></u></p><p class="MsoNormal">"}",<u></u><u></u></p><p class="MsoNormal">"function set_rotation (value)",<u></u><u></u></p><p class="MsoNormal">"{",<u></u><u></u></p><p class="MsoNormal">"\tBrowser.print ('Internal position=' + holdPosition.toString() + ' , internal rotation=' + value.toString() + '\n');",<u></u><u></u></p><p class="MsoNormal">"}"<u></u><u></u></p><p class="MsoNormal">]<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Gets translated into this in XML<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><![CDATA[ecmascript:<u></u><u></u></p><p class="MsoNormal">function set_position (value)<u></u><u></u></p><p class="MsoNormal">{<u></u><u></u></p><p class="MsoNormal">        holdPosition=value;<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal">function set_rotation (value)<u></u><u></u></p><p class="MsoNormal">{<u></u><u></u></p><p class="MsoNormal">        Browser.print ('Internal position=' + holdPosition.toString() + ' , internal rotation=' + value.toString() + '<u></u><u></u></p><p class="MsoNormal">');<u></u><u></u></p><p class="MsoNormal">}<u></u><u></u></p><p class="MsoNormal">]]><u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Note that the \n got converted into a newline.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I am working on this issue.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">John<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div></div></blockquote></div><br></div></div></div>