Copyright © 1998-2007 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
This specification defines the Mathematical Markup Language, or MathML. MathML is an XML application for describing mathematical notation and capturing both its structure and content. The goal of MathML is to enable mathematics to be served, received, and processed on the World Wide Web, just as HTML has enabled this functionality for text.
This specification of the markup language MathML is intended primarily for a readership consisting of those who will be developing or implementing renderers or editors using it, or software that will communicate using MathML as a protocol for input or output. It is not a User's Guide but rather a reference document.
MathML can be used to encode both mathematical notation and mathematical content. About thirty-five of the MathML tags describe abstract notational structures, while another about one hundred and seventy provide a way of unambiguously specifying the intended meaning of an expression. Additional chapters discuss how the MathML content and presentation elements interact, and how MathML renderers might be implemented and should interact with browsers. Finally, this document addresses the issue of special characters used for mathematics, their handling in MathML, their presence in Unicode, and their relation to fonts.
While MathML is human-readable, in all but the simplest cases, authors use equation editors, conversion programs, and other specialized software tools to generate MathML. Several versions of such MathML tools exist, and more, both freely available software and commercial products, are under development.
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 document is a W3C First Public Working Draft produced by the W3C Math Working Group as part of the W3C Math Activity. The goals of the W3C Math Working Group are discussed in the W3C Math WG Charter (revised July 2006). A list of participants in the W3C Math Working Group is available.
Publication as a Working Draft 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.
This First Public Working Draft specifies a new version of the the Mathematical Markup Language, MathML 3.0 [mathml] which is at present under active development. The Math WG hopes this outline draft will permit informed feedback on this most important part of its work. There is a description of some considerations underlying this work in the W3C Math WG's public Roadmap [roadmap]. Feedback should be sent to the Public W3C Math mailing list .
The MathML 2.0 (Second Edition) specification has been a W3C Recommendation since 2001. During the period since its recommendation, a W3C Math Interest Group collected the experience with the deployment of MathML and identified issues with MathML that might be ameliorated. The rechartering af a Math Working Group allows the revision to MathML 3.0 in the light of that experience, of other comments on the markup language, and of recent changes in specifications of the W3C and in the technological context. MathML 3.0 does not signal any change in the overall design of MathML. However, the specification document will be almost completely rewritten to provide a coherent whole containing corrections to all the known errata and clarifications of issues that proved problematic and additions made. Throughout pains are being taken to distinguish the normative and non-normative aspects.
Public discussion of MathML and issues of support through the W3C
for mathematics on the Web takes place on the public mailing list of the Math Working
Group (list archives).
To subscribe send an email to www-math-request@w3.org
with the word subscribe
in the subject line.
Please report errors in this document to www-math@w3.org.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
The basic structure of this document is the same as that of the earlier MathML 2.0 Recommendation [MathML2]. MathML 2.0 itself was a revision of the earlier W3C Recommendation MathML 1.01 [MathML1]; MathML 3.0 itself is a revision of the W3C Recommendation MathML 2.0. It differs from it in that all chapters will have been updated, some new elements and attributes are being added and some have been deprecated. A current list of open issues, pointing into the relevant places in the draft, follows the Table of Contents.
Chapters 1 and 2, which are introductory material, have yet to be revised to reflect the changes elsewhere in the document, and in the rapidly evolving Web environment.
Chapter 3, on presentation-oriented markup, is being extended to
describe new functionalities added as well as smaller improvements of
material already proposed. As a result of concerns for support of
high-quality typesetting and for the relationship with CSS the element
mpadded
has been revised, and the maction
remains
under discussion for possible deprecation. As a result of
earlier work, as recorded in the W3C Note
Arabic mathematical notation, the relationship with bidirectional text is being clarified.
In addition, some adjustments that have proven necessary for easy
markup of elementary school matheamtics have been made.
Chapter 4, on content-oriented markup, has been completely regenerated. The actual content is unchanged in essence, except for a number of elements the addition of which seemed natural, such as some for use in statistics. The text of this chapter is now generated by filtered extraction from XML content dictionaries written in accordance with OpenMath. The advantages of this method include a level of consistency in interpretation that the previous version perhaps did not achieve, automatic generation of some useful and informative tabulations, and a guarantee of alignment with the basic part of OpenMath that the community will appreciate.
Chapter 5 will be newly written to reflect changes in the technology available. Chapter 6 has been rewritten and reorganized to reflect the new situation in regard to Unicode. It is expected that some new ancillary tables will be provided that reflect requests the WG has received. Chapter 7 needs revision yet again since Web technology has changed again.
Chapter 8 on the DOM and the associated appendices D and E for detailed listings will be revised further as proves necessary .
1 Introduction
1.1 Mathematics and its Notation
1.2 Origins and Goals
1.2.1 The History of MathML
1.2.2 Limitations of HTML
1.2.3 Requirements for Mathematics Markup
1.2.4 Design Goals of MathML
1.3 The Role of MathML on the Web
1.3.1 Layered Design of Mathematical Web Services
1.3.2 Relation to Other Web Technology
2 MathML Fundamentals
2.1 MathML Overview
2.1.1 Taxonomy of MathML Elements
2.1.2 Presentation Markup
2.1.3 Content Markup
2.1.4 Mixing Presentation and Content
2.2 MathML in a Document
2.3 Some MathML Examples
2.3.1 Presentation Examples
2.3.2 Content Examples
2.3.3 Mixed Markup Examples
2.4 MathML Syntax and Grammar
2.4.1 MathML Syntax and Grammar
2.4.2 An XML Syntax Primer
2.4.3 Children versus Arguments
2.4.4 MathML Attribute Values
2.4.5 Attributes Shared by all MathML Elements
2.4.6 Collapsing Whitespace in Input
3 Presentation Markup
3.1 Introduction
3.1.1 What Presentation Elements Represent
3.1.2 Terminology Used In This Chapter
3.1.3 Required Arguments
3.1.4 Elements with Special Behaviors
3.1.5 Directionality
3.1.6 Summary of Presentation Elements
3.2 Token Elements
3.2.1 MathML characters in
token elements
3.2.2 Mathematics style attributes common to token
elements
3.2.3 Identifier (mi)
3.2.4 Number (mn)
3.2.5 Operator, Fence, Separator or Accent
(mo)
3.2.6 Text (mtext)
3.2.7 Space (mspace)
3.2.8 String Literal (ms)
3.2.9 Accessing glyphs for
characters from MathML
(mglyph)
3.3 General Layout Schemata
3.3.1 Horizontally Group Sub-Expressions
(mrow)
3.3.2 Fractions (mfrac)
3.3.3 Radicals (msqrt, mroot)
3.3.4 Style Change (mstyle)
3.3.5 Error Message (merror)
3.3.6 Adjust Space Around Content
(mpadded)
3.3.7 Making Sub-Expressions Invisible (mphantom)
3.3.8 Expression Inside Pair of Fences
(mfenced)
3.3.9 Enclose Expression Inside Notation
(menclose)
3.4 Script and Limit Schemata
3.4.1 Subscript (msub)
3.4.2 Superscript (msup)
3.4.3 Subscript-superscript Pair (msubsup)
3.4.4 Underscript (munder)
3.4.5 Overscript (mover)
3.4.6 Underscript-overscript Pair
(munderover)
3.4.7 Prescripts and Tensor Indices
(mmultiscripts)
3.5 Tables and Matrices
3.5.1 Table or Matrix
(mtable)
3.5.2 Row in Table or Matrix (mtr)
3.5.3 Labeled Row in Table or Matrix
(mlabeledtr)
3.5.4 Entry in Table or Matrix (mtd)
3.5.5 Alignment Markers
3.6 Enlivening Expressions
3.6.1 Bind Action to Sub-Expression
(maction)
3.7 Elementary Math
3.7.1 Addition, Subtraction, and Multiplication
3.7.2 Long Division
3.7.3 Repeating decimal
4 Content Markup
4.1 Introduction
4.1.1 The Intent of Content Markup
4.1.2 The Scope of Content Markup
4.1.3 Basic Concepts of Content Markup
4.1.4 The structure of MathML3 Content Expressions
4.1.5 Canonical and Legacy Content MathML
4.2 Canonical Content Markup
4.2.1 Numbers
4.2.2 Identifiers
4.2.3 Symbols
4.2.4 The MathML3 Content Dictionaries and Operators
4.2.5 Function Application
4.2.6 Bindings and Bound Variables
4.2.7 Qualifiers
4.2.8 Structure Sharing
4.2.9 Semantic Mapping
4.2.10 In Situ Error Markup
4.3 Rendering of Content Elements
4.3.1 General Rules
4.3.2 Attributes Modifying Content Markup Rendering
4.4 Legacy Markup in Content MathML
4.4.1 Numbers with constant type
4.4.2 Token Elements
4.4.3 Tokens with Attributes
4.4.4 Container Markup
4.4.5 Domain of Application (domainofapplication) in Applications
4.4.6 Domain of Application (domainofapplication) in Bindings
4.4.7 Integrals with Calling patterns
4.4.8 degree
4.4.9 Upper and Lower Limits
4.4.10 Lifted Associative Commutative Operators
4.4.11 Declare (declare)
5 Combining Presentation and Content Markup
5.1 Why Two Different Kinds of Markup?
5.2 Mixed Markup
5.2.1 Reasons to Mix Markup
5.2.2 Combinations that are prohibited
5.2.3 Presentation Markup Contained in Content Markup
5.2.4 Content Markup Contained in
Presentation Markup
5.3 Parallel Markup
5.3.1 Top-level Parallel Markup
5.3.2 Fine-grained Parallel Markup
5.3.3 Parallel Markup via Cross-References:
id and xref
5.3.4 Annotation Cross-References using XLink:
id and href
5.4 Tools, Style Sheets and Macros for Combined Markup
5.4.1 Notational Style Sheets
5.4.2 Content-Faithful Transformations
5.4.3 Style Sheets for Extensions
6 Characters, Entities and Fonts
6.1 Introduction
6.2 MathML Characters
6.2.1 Unicode Character Data
6.2.2 Special Characters Not in Unicode
6.2.3 Mathematical Alphanumeric Symbols
Characters
6.2.4 Non-Marking Characters
6.3 Character Symbol Listings
6.3.1 Special Constants
6.3.2 Character Tables (ASCII format)
6.3.3 Tables arranged by Unicode block
6.3.4 Negated
Mathematical Characters
6.3.5 Variant
Mathematical Characters
6.3.6 Mathematical Alphanumeric Symbols
6.3.7 MathML Character Names
7 The MathML Interface
7.1 Embedding MathML in other Documents
7.1.1 MathML and Namespaces
7.1.2 The Top-Level
math Element
7.1.3 Invoking MathML Processors
7.1.4 Mixing and Linking MathML and HTML
7.1.5 MathML and Graphical Markup
7.1.6 Using CSS with MathML
7.2 Conformance
7.2.1 MathML Conformance
7.2.2 Handling of Errors
7.2.3 Attributes for unspecified data
7.3 Future Extensions
7.3.1 Macros and Style Sheets
7.3.2 XML Extensions to MathML
8 Document Object Model for MathML
8.1 Introduction
8.1.1 hasFeature String
8.1.2 MathML DOM Extensions
A Parsing MathML
A.1 Use of MathML as Well-Formed
XML
A.2 Using the MathML DTD
A.2.1 DOCTYPE declaration for MathML
A.2.2 DTD Parameters
A.2.3 MathML as a DTD Module
A.2.4 SGML
A.2.5 The MathML DTD
A.3 Using the MathML XML Schema
A.3.1 Associating the MathML schema with MathML fragments
A.3.2 Character entity references
B Content Markup Validation Grammar
C MathML3 Content Dictionaries
C.1 About Content Dictionaries
C.2 The MathML3 Content Dictionary Format
C.2.1 Content Dictionaries
C.2.2 Symbol Definitions
C.2.3 Symbol Roles
C.2.4 Default Rendering Specifications
D Document Object Model for MathML
D.1 IDL Interfaces
D.1.1 Miscellaneous Object Definitions
D.1.2 Generic MathML Elements
D.1.3 Presentation Elements
D.1.4 Content Elements
D.2 MathML DOM Tables
D.2.1 Chart of MathML DOM Inheritance
D.2.2 Table of Elements and MathML DOM Representations
E MathML Document Object Model Bindings (Non-Normative)
E.1 MathML Document Object Model IDL Binding
E.2 MathML Document Object Model Java Binding
E.3 MathML Document Object Model ECMAScript Binding
F Operator Dictionary (Non-Normative)
F.1 Format of operator dictionary entries
F.2 Indexing of operator dictionary
F.3 Choice of entity names
F.4 Notes on lspace and
rspace attributes
F.5 Operator dictionary entries
G Sample CSS Style Sheet for MathML (Non-Normative)
H Glossary (Non-Normative)
I Working Group Membership and Acknowledgments (Non-Normative)
I.1 The Math Working Group Membership
I.2 Acknowledgments
J Changes (Non-Normative)
J.1 Changes between MathML 2.0 Second Edition and MathML 3.0
K References (Non-Normative)
L Index (Non-Normative)
L.1 MathML Elements
L.2 MathML Attributes
The following is a list of open issues which are highlighted in this draft. The issue name links to the text of the issue in this specification. There is also a W3C member-only link to the Math Working Group wiki. (Note that in many cases the wiki does not have a page discussing the issue, but will offer to create such pages on demand.) In some cases there is also a (member only) link to the Math Working Group's Issue tracking system.
mrow
mpadded
attribute names
rspace
vs. advancewidth
mpadded
sign conventions
mpadded
examples
maction
encoding
value
bvar
element?
share
in Presentation MathML as well?
type
attribute on set
?
type
attribute on tendsto
?