Re: Implementation of semantics

On 04/11/2012 12:54, Frédéric WANG wrote:
> I agree that <semantics> is supposed to be used to annotate the first
> child and so it is weird to "annotate the annotation". However,
> without further restrictions, the first child may be any MathML
> element, including an <annotation>, so syntactically Jacques
> Distler's use case is valid

The text (and the MathML2 DTD) may not be as exact as it could be but I
don't think the spec phrase
" Any MathML expression may appear as the first child "
is the same as saying any MathML element is allowed. There are many
MathML elements that are only usable in restricted contexts and are not,
in themselves, expressions (<mtr> <mtd> <sep/> <none/> <mprescripts/>
for example).

<annotation> and <annotation-xml> fall into this category so are not
MathML expressions or intended to be allowed as first child of semantics.

That said, even though I think it's correct for the MathML3 schema to
declare that usage invalid, I think it's reasonable (and consistent with
html implementation policy generally) for a browser implementation to
keep it working if it worked before.

As I mentioned this is tighter in the MathML3 schema but even in the
MathML2 DTD this was fairly explicit, "MathML Expression" is the markup
that can appear as a child of <math> which in MathML2 DTD was the
parameter entity %MathExpression; which expands to a list of all top
level elements but explicitly excluding annotation-xml and the other
elements listed above.

David

Received on Monday, 5 November 2012 00:18:49 UTC