Re: Implementation of semantics

A little background first...

semanatics/annotation was originally conceived as an open-ended extension
method for various purposes.  For products that had their own internal
representation, they could write that out inside of an annotation and not
lose that info when converting to MathML (assuming all of the MathML was
pasted back in).  One could also use it to tie together presentation and
content MathML.

MathML 3 formalized some of those uses via the "cd" and "name" attrs.  I'm
a bit dubious they are used much, so the primary thing to look at (and only
thing if they aren't present) is the encoding attr.  Those are used but not
really standardized other than the ones you mention for MathML.

I would guess that >99.9% of the uses of semantics have presentation MathML
as the first element *without* using an annotation.  The annotation-xml
element can be wrapped around the first element and it can still be
presentation MathML, but the presentation MathML could be in some child
other than the first child.

For MathML inside of another environment, it is up to that environment to
define what is legal where.  HTML5 says you can put HTML inside of mtext,
so that is how you can add SVG to MathML *in an HTML document*.  It won't
likely work outside of an HTML5 environment though.  I thought that
annotation-xml was another legal place, but I don't see it listed in [1].
It is however mentioned at [2]. I don't know the normative nature of either
of those documents.  Using annotation-xml is a way to get SVG safely into
MathML when you care about other targets than HTML5.


So on to your questions:

1.  If the implementation can handle something besides presentation MathML,
it probably should seriously consider using the alternative if it is
present.  After all, why go to the trouble of generating an alternative if
you don't think it is better/has more info?  So if SVG is present and
Firefox or Webkit can display SVG better than presentation MathML, I'd
suggest you use it.  The spec leaves this decision up to the
implementation, so the choice/decision is yours to make.

If there is no presentation MathML, then pick whichever format you feel you
can render.  I would tend to pick a richer format such as SVG over plain
text, but the spec says the choice is yours.

2.  Despite what the schema may say (another fix needed?), the first child
can be annotation/annotation-xml in addition to "raw" MathML. That
annotation can be presentation MathML, SVG, or XHTML.  You might want to
use the order to determine the top pick. I don't recall if we discussed
using ordering for a preference in the MathML WG.  If we did, it didn't
make it into the spec.

3.  I don't have anything to add to Paul and David's answers about
"official" encodings.

4.  I think you should take the Presentation MathML, whether you use it for
rendering or not, to determine whether this is an embellished operator.  I
think the wording in "3.2.5.7.3 Exception for embellished operators" needs
some cleanup as it doesn't make sense if the first child is not
presentation MathML. It was meant for msub and friends and I think
semantics was added to that text without thinking about it completely.


Neil Soiffer
Senior Scientist
Design Science, Inc.
www.dessci.com
~ Makers of MathType, MathFlow, MathPlayer, MathDaisy, Equation Editor ~



[1] http://dev.w3.org/html5/html4-differences/
[2] http://blog.whatwg.org/category/syntax/page/2



On Mon, Oct 29, 2012 at 1:23 PM, Frédéric WANG <fred.wang@free.fr> wrote:

> Hi,
>
> I have some questions about the correct implementation of semantics,
> discussed on the Webkit bug tracker:
>
> https://bugs.webkit.org/show_**bug.cgi?id=100626<https://bugs.webkit.org/show_bug.cgi?id=100626>
>
> So the correct behavior is basically to use the first child as the default
> rendering and find possible alternate renderings among the annotation
> children. Some questions:
>
> 1) Does the following implementation make sense for a browser without
> Content MathML support:
>
> - Test if the first child is a presentation MathML element and if so,
> display it.
> - Otherwise, read the list of other children in that order and display the
> first <annotation-xml> with a known encoding ; or a plain text <annotation>
> if one is found.
>
> 2) I think the first child can only be presentation / content MathML. But
> does that means that an <annotation> or an <annotation-xml> (which are
> MathML elements) can be used as the first child (to include SVG or HTML
> descendants for example)?
>
> 3) What are the official encoding values other than MIME content-type? The
> REC mentions "Content-MathML", "Presentation-MathML" for backward
> compatibility. The W3C note http://www.w3.org/Math/**
> Documents/Notes/graphics.xml#**svg-in-mathml-guidelines<http://www.w3.org/Math/Documents/Notes/graphics.xml#svg-in-mathml-guidelines>also contains the "SVG1.1" value, but is it official?
>
> 4) The spec says that <semantics> is an embellished operator if the first
> child is one. But should we actually consider the visible child  (as we do
> for maction)?
>
> --
> Frédéric Wang
> maths-informatique-jeux.com/**blog/frederic<http://maths-informatique-jeux.com/blog/frederic>
>
>
>

Received on Tuesday, 30 October 2012 05:16:48 UTC