Re: [webkit-dev] XML Serialization Issues
It's supposed to be deterministic so there is a bug somewhere. - R. Niwa On Thu, Aug 29, 2013 at 4:27 PM, Dean Jackson wrote: > I believe the tests you added are not reliable across runs. In particular, > the unique id you generate > isn’t necessarily always the same, but your -expected.txt is just a dump > of the DOM. > > I filed: http://webkit.org/b/120490, but I only mentioned one test. Since > then I’ve seen more fail. > > Dean > > On 30 Aug 2013, at 3:25 am, Rob Buis wrote: > > > Fixed. > > > > More seriously, all bugs mentioned below are fixed/closed, please open > > new ones for any regressions/improvements. > > Cheers, > > > > Rob. > > > > On 19 June 2013 14:44, Alex Milowski wrote: > >> I was working on using MathJax [1] to turn MathML into SVG and ran into > some > >> serious serialization issues. In summary, as MathJax programmatically > >> creates SVG renderings of the MathML, when it creates XLink attributes, > it > >> doesn't seem to define a prefix. While this works for rendering, it > does > >> when you try to extract a serialization of the SVG. > >> > >> That is, MathJax creates SVG 'use' elements like (assuming SVG as the > >> default namespace): > >> > >> http://www.w3.org/1999/xlink > "/> > >> > >> but instead I get: > >> > >> http://www.w3.org/1999/xlink"/> > >> > >> which makes the SVG incorrect as the 'use' element is now in the xlink > >> namespace. > >> > >> You can work around this by manually setting the "prefix" property on > each > >> xlink:href attribute. > >> > >> Looking into why this happens, I can see that the serializer seriously > >> broken in a number of ways when the DOM is constructed with incomplete > (e.g. > >> missing namespace declarations) or inconsistent information (e.g. same > >> prefix used for different namespaces in the same context). > >> > >> I found at least 6 bugs outstanding (#16739 [2], #16496 [3], #19121 [4], > >> #22958 [5], #83056 [6], #106531 [7]) and filed a new one (#117764 [8]). > >> Some of these date back to 2007 (6 years ago!). > >> > >> These bugs break down to these categories: > >> > >> 1. Default namespace issues: #16739, #106531, #16496 > >> 2. Conflicting prefix mappings: #117764, #19121 > >> 3. Namespace attribute issues: #22958, #83056, #117764 > >> > >> In looking at the code (MarkupAccumulator.cpp), they all suffer from > one of > >> two problems: > >> > >> 1. The computed prefix used isn't properly used for the declaration. > >> > >> 2. The generated namespace mappings aren't properly stored, scoped, or > dealt > >> with when they are inconsistent. > >> > >> There is an general assumption in the code that certain prefixes should > >> always be used for certain namespaces. Unfortunately, it does so > without > >> looking to see whether there is a conflict already in scope. Also, > when the > >> namespace is not recognized and there is no prefix, a prefix needs to be > >> generated for the serialization. > >> > >> Having written several robust XML Serializers for other projects, this > can > >> all be fixed in a straightforward way. I've looked at the code and know > >> what should be done. The changes are probably modest. > >> > >> Unfortunately, I can't spend the time to directly write and test the > code > >> till probably after November. :( > >> > >> I am certainly willing to help, explain my strategy, advise, test, etc. > if > >> there was another willing developer out there who would like to see > these > >> bugs closed. > >> > >> [1] http://www.mathjax.org/ > >> [2] https://bugs.webkit.org/show_bug.cgi?id=16739 > >> [3] https://bugs.webkit.org/show_bug.cgi?id=16496 > >> [4] https://bugs.webkit.org/show_bug.cgi?id=19121 > >> [5] https://bugs.webkit.org/show_bug.cgi?id=22958 > >> [6] https://bugs.webkit.org/show_bug.cgi?id=83056 > >> [7] https://bugs.webkit.org/show_bug.cgi?id=106531 > >> [8] https://bugs.webkit.org/show_bug.cgi?id=117764 > >> > >> > >> -- > >> --Alex Milowski > >> "The excellence of grammar as a guide is proportional to the paucity of > the > >> inflexions, i.e. to the degree of analysis effected by the language > >> considered." > >> > >> Bertrand Russell in a footnote of Principles of Mathematics > >> > >> ___ > >> webkit-dev mailing list > >> webkit-dev@lists.webkit.org > >> https://lists.webkit.org/mailman/listinfo/webkit-dev > >> > > ___ > > webkit-dev mailing list > > webkit-dev@lists.webkit.org > > https://lists.webkit.org/mailman/listinfo/webkit-dev > > ___ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev > ___ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev
Re: [webkit-dev] XML Serialization Issues
I believe the tests you added are not reliable across runs. In particular, the unique id you generate isn’t necessarily always the same, but your -expected.txt is just a dump of the DOM. I filed: http://webkit.org/b/120490, but I only mentioned one test. Since then I’ve seen more fail. Dean On 30 Aug 2013, at 3:25 am, Rob Buis wrote: > Fixed. > > More seriously, all bugs mentioned below are fixed/closed, please open > new ones for any regressions/improvements. > Cheers, > > Rob. > > On 19 June 2013 14:44, Alex Milowski wrote: >> I was working on using MathJax [1] to turn MathML into SVG and ran into some >> serious serialization issues. In summary, as MathJax programmatically >> creates SVG renderings of the MathML, when it creates XLink attributes, it >> doesn't seem to define a prefix. While this works for rendering, it does >> when you try to extract a serialization of the SVG. >> >> That is, MathJax creates SVG 'use' elements like (assuming SVG as the >> default namespace): >> >> http://www.w3.org/1999/xlink"/> >> >> but instead I get: >> >> http://www.w3.org/1999/xlink"/> >> >> which makes the SVG incorrect as the 'use' element is now in the xlink >> namespace. >> >> You can work around this by manually setting the "prefix" property on each >> xlink:href attribute. >> >> Looking into why this happens, I can see that the serializer seriously >> broken in a number of ways when the DOM is constructed with incomplete (e.g. >> missing namespace declarations) or inconsistent information (e.g. same >> prefix used for different namespaces in the same context). >> >> I found at least 6 bugs outstanding (#16739 [2], #16496 [3], #19121 [4], >> #22958 [5], #83056 [6], #106531 [7]) and filed a new one (#117764 [8]). >> Some of these date back to 2007 (6 years ago!). >> >> These bugs break down to these categories: >> >> 1. Default namespace issues: #16739, #106531, #16496 >> 2. Conflicting prefix mappings: #117764, #19121 >> 3. Namespace attribute issues: #22958, #83056, #117764 >> >> In looking at the code (MarkupAccumulator.cpp), they all suffer from one of >> two problems: >> >> 1. The computed prefix used isn't properly used for the declaration. >> >> 2. The generated namespace mappings aren't properly stored, scoped, or dealt >> with when they are inconsistent. >> >> There is an general assumption in the code that certain prefixes should >> always be used for certain namespaces. Unfortunately, it does so without >> looking to see whether there is a conflict already in scope. Also, when the >> namespace is not recognized and there is no prefix, a prefix needs to be >> generated for the serialization. >> >> Having written several robust XML Serializers for other projects, this can >> all be fixed in a straightforward way. I've looked at the code and know >> what should be done. The changes are probably modest. >> >> Unfortunately, I can't spend the time to directly write and test the code >> till probably after November. :( >> >> I am certainly willing to help, explain my strategy, advise, test, etc. if >> there was another willing developer out there who would like to see these >> bugs closed. >> >> [1] http://www.mathjax.org/ >> [2] https://bugs.webkit.org/show_bug.cgi?id=16739 >> [3] https://bugs.webkit.org/show_bug.cgi?id=16496 >> [4] https://bugs.webkit.org/show_bug.cgi?id=19121 >> [5] https://bugs.webkit.org/show_bug.cgi?id=22958 >> [6] https://bugs.webkit.org/show_bug.cgi?id=83056 >> [7] https://bugs.webkit.org/show_bug.cgi?id=106531 >> [8] https://bugs.webkit.org/show_bug.cgi?id=117764 >> >> >> -- >> --Alex Milowski >> "The excellence of grammar as a guide is proportional to the paucity of the >> inflexions, i.e. to the degree of analysis effected by the language >> considered." >> >> Bertrand Russell in a footnote of Principles of Mathematics >> >> ___ >> webkit-dev mailing list >> webkit-dev@lists.webkit.org >> https://lists.webkit.org/mailman/listinfo/webkit-dev >> > ___ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev ___ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev
Re: [webkit-dev] XML Serialization Issues
Fixed. More seriously, all bugs mentioned below are fixed/closed, please open new ones for any regressions/improvements. Cheers, Rob. On 19 June 2013 14:44, Alex Milowski wrote: > I was working on using MathJax [1] to turn MathML into SVG and ran into some > serious serialization issues. In summary, as MathJax programmatically > creates SVG renderings of the MathML, when it creates XLink attributes, it > doesn't seem to define a prefix. While this works for rendering, it does > when you try to extract a serialization of the SVG. > > That is, MathJax creates SVG 'use' elements like (assuming SVG as the > default namespace): > > http://www.w3.org/1999/xlink"/> > > but instead I get: > > http://www.w3.org/1999/xlink"/> > > which makes the SVG incorrect as the 'use' element is now in the xlink > namespace. > > You can work around this by manually setting the "prefix" property on each > xlink:href attribute. > > Looking into why this happens, I can see that the serializer seriously > broken in a number of ways when the DOM is constructed with incomplete (e.g. > missing namespace declarations) or inconsistent information (e.g. same > prefix used for different namespaces in the same context). > > I found at least 6 bugs outstanding (#16739 [2], #16496 [3], #19121 [4], > #22958 [5], #83056 [6], #106531 [7]) and filed a new one (#117764 [8]). > Some of these date back to 2007 (6 years ago!). > > These bugs break down to these categories: > > 1. Default namespace issues: #16739, #106531, #16496 > 2. Conflicting prefix mappings: #117764, #19121 > 3. Namespace attribute issues: #22958, #83056, #117764 > > In looking at the code (MarkupAccumulator.cpp), they all suffer from one of > two problems: > > 1. The computed prefix used isn't properly used for the declaration. > > 2. The generated namespace mappings aren't properly stored, scoped, or dealt > with when they are inconsistent. > > There is an general assumption in the code that certain prefixes should > always be used for certain namespaces. Unfortunately, it does so without > looking to see whether there is a conflict already in scope. Also, when the > namespace is not recognized and there is no prefix, a prefix needs to be > generated for the serialization. > > Having written several robust XML Serializers for other projects, this can > all be fixed in a straightforward way. I've looked at the code and know > what should be done. The changes are probably modest. > > Unfortunately, I can't spend the time to directly write and test the code > till probably after November. :( > > I am certainly willing to help, explain my strategy, advise, test, etc. if > there was another willing developer out there who would like to see these > bugs closed. > > [1] http://www.mathjax.org/ > [2] https://bugs.webkit.org/show_bug.cgi?id=16739 > [3] https://bugs.webkit.org/show_bug.cgi?id=16496 > [4] https://bugs.webkit.org/show_bug.cgi?id=19121 > [5] https://bugs.webkit.org/show_bug.cgi?id=22958 > [6] https://bugs.webkit.org/show_bug.cgi?id=83056 > [7] https://bugs.webkit.org/show_bug.cgi?id=106531 > [8] https://bugs.webkit.org/show_bug.cgi?id=117764 > > > -- > --Alex Milowski > "The excellence of grammar as a guide is proportional to the paucity of the > inflexions, i.e. to the degree of analysis effected by the language > considered." > > Bertrand Russell in a footnote of Principles of Mathematics > > ___ > webkit-dev mailing list > webkit-dev@lists.webkit.org > https://lists.webkit.org/mailman/listinfo/webkit-dev > ___ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev
[webkit-dev] XML Serialization Issues
I was working on using MathJax [1] to turn MathML into SVG and ran into some serious serialization issues. In summary, as MathJax programmatically creates SVG renderings of the MathML, when it creates XLink attributes, it doesn't seem to define a prefix. While this works for rendering, it does when you try to extract a serialization of the SVG. That is, MathJax creates SVG 'use' elements like (assuming SVG as the default namespace): http://www.w3.org/1999/xlink"/> but instead I get: http://www.w3.org/1999/xlink"/> which makes the SVG incorrect as the 'use' element is now in the xlink namespace. You can work around this by manually setting the "prefix" property on each xlink:href attribute. Looking into why this happens, I can see that the serializer seriously broken in a number of ways when the DOM is constructed with incomplete (e.g. missing namespace declarations) or inconsistent information (e.g. same prefix used for different namespaces in the same context). I found at least 6 bugs outstanding (#16739 [2], #16496 [3], #19121 [4], #22958 [5], #83056 [6], #106531 [7]) and filed a new one (#117764 [8]). Some of these date back to 2007 (6 years ago!). These bugs break down to these categories: 1. Default namespace issues: #16739, #106531, #16496 2. Conflicting prefix mappings: #117764, #19121 3. Namespace attribute issues: #22958, #83056, #117764 In looking at the code (MarkupAccumulator.cpp), they all suffer from one of two problems: 1. The computed prefix used isn't properly used for the declaration. 2. The generated namespace mappings aren't properly stored, scoped, or dealt with when they are inconsistent. There is an general assumption in the code that certain prefixes should always be used for certain namespaces. Unfortunately, it does so without looking to see whether there is a conflict already in scope. Also, when the namespace is not recognized and there is no prefix, a prefix needs to be generated for the serialization. Having written several robust XML Serializers for other projects, this can all be fixed in a straightforward way. I've looked at the code and know what should be done. The changes are probably modest. Unfortunately, I can't spend the time to directly write and test the code till probably after November. :( I am certainly willing to help, explain my strategy, advise, test, etc. if there was another willing developer out there who would like to see these bugs closed. [1] http://www.mathjax.org/ [2] https://bugs.webkit.org/show_bug.cgi?id=16739 [3] https://bugs.webkit.org/show_bug.cgi?id=16496 [4] https://bugs.webkit.org/show_bug.cgi?id=19121 [5] https://bugs.webkit.org/show_bug.cgi?id=22958 [6] https://bugs.webkit.org/show_bug.cgi?id=83056 [7] https://bugs.webkit.org/show_bug.cgi?id=106531 [8] https://bugs.webkit.org/show_bug.cgi?id=117764 -- --Alex Milowski "The excellence of grammar as a guide is proportional to the paucity of the inflexions, i.e. to the degree of analysis effected by the language considered." Bertrand Russell in a footnote of Principles of Mathematics ___ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev