This Draft Note examines the treatment of fill-in-the-blank constructions in mathematical documents using MathML. The current edition of the MathML 3.0 Recommendation [MathML3] is the markup language of choice and through its inclusion in HTML5 [HTML5] this note addresses fill-in-the-blank constructions in more documents on the wider evolving web. It arises out of work considering the problem of wide accessibility for mathematical documents beyond just print and ordinary browser screens.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This Draft Note provides a discussion of fill-in-the-blank constructions expressed with MathML. It contains non-normative interpretations of the MathML 3.0 Recommendation [MathML3] and it provides guidelines for representing “fill in the blank”. Please direct comments and report errors in this document to firstname.lastname@example.org.
This document has been produced by the W3C Math Working Group as part of the W3C Math Activity (Activity statement). The goals of the Working Group are discussed in the Working Group Charter. A list of participants in the W3C Math Working Group is available.
Publication as a Working Group Note does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress. Patent disclosures relevant to this Note may be found on the Math Working Group's patent disclosure page.
1 Fill in the Blank
1.2 Defining a “blank”
1.3.1 Example 1
1.3.2 Example 2
1.4 Rendering and Editing
1.4.1 Blanks on HTML Pages
1.4.2 Aural Rendering
1.5 Open Questions
MathML lacks a defined method to create a “blank” to be filled in. A typical use for this would be for a test where the test reader needs to answer a mathematical question. When printed, the blank should be large enough so that an answer can fit in the “blank”. If presented online, the blank should allow editing.
The Math WG has discussed adding such a feature. If MathML were only used in HTML(5), then defining a solution would be much easier. However, MathML is used in a wide variety of situations, from publishing work flows to computation systems, in addition to being used for web pages. Given these different environments, it is important to find a solution that does not impose a large burden on implementers.
As MathML gets used more frequently, it is useful to standardize a method for representing “blanks”. It is important to avoid the situation where various standards that incorporate MathML suggest different ways to represent a blank. One such standard that is specifying the “right” way to represent blanks is DAISY [DAISY]. DAISY, together with the NIMAS standard [NIMAS] , are producing guidelines for how to encode samples, and these samples include fill in the blank examples as found in textbooks.
The goal of this note is to define a flexible means of specifying what is a “blank” so that renderers (visual and aural) can do something intelligent with the blank. At the same time, the note does not impose a burden on those renderers and systems that do not or can not do something special with blanks.
To indicate a blank, set the class attribute of a MathML
element that displays the blank to “
this element will be an menclose that draws a line under some
space element or a box around the element. The space element
could be an
mtext that contains non-breaking
spaces ( ), or other element as is appropriate.
If the document is meant to allow interactive feedback, it is
usually a good idea to also include an
id attribute so it
can be identified. This is discussed more fully in
Blanks in HTML Pages.
<math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mn>3</mn> <mo>+</mo> <mn>9</mn> </mrow> <mo>=</mo> <menclose class="MathML-Blank" notation="bottom"> <mtext>  </mtext> </menclose> </math>
Blanks often are visually displayed as underlined spaces,
although empty circles, squares, or other usages occur in
practice. Most of these can be represented by an
element whose child is an
mspace of the appropriate size.
However, other representations should not be ruled out.
<ol> <li> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mrow> <mn> 667 </mn> <mo> - </mo> <mn> 358 </mn> </mrow> <mo> = </mo> <menclose class="MathML-Blank" notation="bottom"> <mspace width="6em" height="2ex"/> </menclose> </mrow> </math> </li> <li> <math> <mstack> <mn> 515 </mn> <msrow> <mo> - </mo> <mn> 472 </mn> </msrow> <msline/> <mn class="MathML-Blank">     <!--no-break space--> </mn> </mstack> </math> </li> </ol>
Note that in the second example,
mn was used. This is
important because we want the blank to be three digits wide,
and in an
msrow, all elements are considered one digit
wide except for
mn. See the MathML Recommendation
[MathML3] for more
<h4>Do you know <strong>HOW</strong>?</h4> <p><span>Compare. Write </span> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mo> > </mo> </mrow> </math> <span>, </span> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mo> < </mo> </mrow> </math> <span> or </span> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mo> = </mo> </mrow> </math> <span> for each </span> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <menclose notation="circle"> <mspace width="1em" height="0.8em" depth="0.2em"/> </menclose> </mrow> </math> <span>.</span> </p> <ol> <li> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mfrac> <mn> 3 </mn> <mn> 5 </mn> </mfrac> <menclose class="MathML-Blank" notation="circle"> <mspace width="1em" height="0.8em" depth="0.2em"/> </menclose> <mfrac> <mn> 4 </mn> <mn> 5 </mn> </mfrac> </mrow> </math> </li> <li> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mfrac> <mn> 1 </mn> <mn> 4 </mn> </mfrac> <menclose class="MathML-Blank" notation="circle"> <mspace width="1em" height="0.8em" depth="0.2em"/> </menclose> <mfrac> <mn> 2 </mn> <mn> 3 </mn> </mfrac> </mrow> </math> </li> </ol>
NOTE: This section is in progress, it will discuss how this would work in an HTML page that would use an editor that allowed filling in the blank.
Web page designers should attempt to make a blank clearly
identifiable to readers so they know what to do to start
editing the formula. The primary idea is to make it possible
to move the focus to the blank; this can be done by the
onkeypress event to the blank. When triggered, the script can
replace the blank by an entry form of some type. To facilitate
dealing with the result, the blank should be tagged with an
attribute and result of the user editing should be part of a
form that is readily identifiable.
In many cases, an answer will be a simple number, identifier,
or linear expression and a text input box will suffice. In
this case, a standard
<input type="text"> could be
A common technique hides in input elements the MathML content
so that it can be processed by a form submission and a server
can be reached with the formulae that the user has entered. We
recommend that the value of the
id attribute be used as the
value of the name attribute of the corresponding hidden input
element. An example is shown below:
Because a user may want to come back and edit an answer, it is recommended that any entry should serve as the default value should the user activate the “blank” again.
Although specific uses of blanks may have specific ways of being spoken, in general, the important thing to convey is that the notation represents a blank, not the notation itself. For example, if someone is suppose to fill one of ‘<’, ‘=’, or ‘>’, in a problem, it probably doesn't matter whether the blank is an underline, is circled, or is just some white space. With the use of the class attribute, it is easy for aural renderers to say “blank” and skip the details of how the blank is represented in an expression such as “5 _ 6”.
This draft note is incomplete, so we would appreciate comments on the ideas presented in the draft note. In particular, do the ideas presented work for:
Also, we are looking for feedback on:
Another open question is about the use of content of the blank element: should it be:
...” or “?” that should be removed right away when the user starts editing?