In bug 113400 comment #5 From Henri Sivonen 2002-01-13 06:14 ------- [...] I took the official DTD (372 KB) and removed all the declarations and comments I thought were uninteresting for a non-validating system. I ended up with 45 KB exclusive of the character entity declarations that already exist in Mozilla's mathml.dtd. However, I'm getting syntax error but I haven't yet figured out why. [...] --------------- Got any luck since then? This would be a good thing to have for m1.0. It looks alright to me to just have the IDs than aim at further extras and end up with nothing at all in the allocated schedules of the milestones.
Sorry, but I can't figure out why the I'm getting an error. I have a minimized test case at http://www.hut.fi/~hsivonen/test/entity-entity.xml The problematic declaration comes from the W3C's DTD.
Expat doesn't like it when an entity parameter declaration depends on another parameter entiry declaration. Then, the element declarations in which the IDness of id is declared, rely on parameter entities declared in the problematic way. The idea is that the document author can tweak a couple of declarations in the internal subset and have the entire external subset parsed differently. This would break if I hard-coded the namespace prefix etc. Any ideas on how to proceed from here?
hsivonen: I have a testcase using the XHTML 1.1 + MathML 2.0 DTD from W3C directly, where DOM Core Level 1's document.getElementById() breaks, trying to get a MathML element by its id attribute. No parsing errors; a complete copy of the DTD. Is this the same bug as you report here, or another bug?
Isn't this really an XML bug, then?
Created attachment 125337 [details] testcase: id & MathML namespace work together This testcase shows that getElementById() works for a MathML element if the ID-ness of an attribute is declared in the DTD
The actual bug seems to be that Expat does not handle parameter entity references inside other entity references. If you try to do that in the internal subset (http://www.hut.fi/~hsivonen/test/entity-entity.xml), you get a parser error. If you do that in an external DTD, we silently fail. Now, this bug can be solved independent of the Expat changes by making sure the DTD does not use parameter entity references inside entity references. I advice doing this, since it is unclear when we can fix Expat. I filed bug 208972 for the Expat issue.
Fixed via bug 208744. bz simply hardcoded 'id' for MathML elements, which is spec-compliant. Whether the 'id' attributed is hard-coded or added on the fly from an external DTD file is immaterial for MathML. Marking FIXED.
Status: ASSIGNED → RESOLVED
Last Resolved: 15 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.6alpha
You need to log in before you can comment on or make changes to this bug.