CHAPTER 3 WEB VOCABULARIES The DOCTYPE declaration for XHTML Basic is I ve introduced you to the basics of XHTML, examining it as a vocabulary of XML. Now let s move on to examine some of the other popular web vocabularies, starting with MathML and SVG. MathML Mathematical Markup Language (MathML) is a popular XML vocabulary that describes mathematical notation. It was developed to include mathematical expressions on web pages. MathML is an XML vocabulary, so it must be well formed and valid according to the specification. You can find out more about MathML at http://www.w3.org/Math/. While the W3C MathML group was developing the specification, the group realized it actually had two distinct goals. There was a need for a vocabulary that could represent both how mathematic equations were displayed, as well as the meaning of a mathematic equation. The group divided MathML into two types of encoding: presentation and content. Presentation MathML conveys the notation and structure of mathematical formulas, while Content MathML communicates meaning without being concerned about notation. You can use either or both of these elements, depending on your task, but be aware that each has some web browser limitations. Firefox supports Presentation MathML, as MathML is part of Mozilla s layout engine. The derived browsers Netscape, Galeon, and Kmeleon also include Presentation MathML, as does the W3C browser Amaya. Internet Explorer 6 supports MathML using plugins such as the free MathPlayer (http://www.dessci.com/en/products/mathplayer/) and techexplorer (http://www.integretechpub.com/techexplorer/). You can t use MathML within Opera. Presentation MathML Presentation MathML provides control over the display of mathematic notation in a web page. Thirty presentation elements and around 50 attributes allow you to encode mathematical formulas. Presentation MathML tries to map each presentation element to an element. To start, Presentation MathML divides a formula into vertical rows using elements. This basic element is used as a wrapper. Rows may contain other nested rows. Each element usually has a combination of mathematical numbers (), mathematical identifiers (), and mathematical operators (). This example represents 10 + (x . y)4: