什么是HTML5 MathML?
概念:HTML5 可以在文档中使用 MathML 标签元素,对应的标签是 <math>...</math> 。MathML 是数学标记语言的缩写,是一种基于XML(标准通用标记语言的子集)的标准,用来在互联网上书写数学符号和公式的标记语言。
MathML 是一个用于标记数学表达式的 XML 词汇表,它包含两个子语言:Presentation MathML 和 Content MathML。Presentation MathML 主要负责描述数学表达式的布局(因此可与 TeX 或更早的 SGML 标记语言相比较,SGML 用于描述诸如 ISO 12083 之类格式的数学表达式的布局)。Content MathML 主要负责标记表达式的某些含义或数学结构。MathML 的这一方面受到 OpenMath 语言(用于标记数学语义)的很大影响,在 MathML3 中,与 OpenMath 更为贴近。
特性及注意事项:
- 大部分浏览器都支持 MathML 标签,如果你的浏览器不支持该标签,可以使用最新版的 Firefox 或 Safari 浏览器查看。
为什么需要HTML5 MathML?
我们要想在网页中插入一些数学公式,利用之前的技术只能通过别的途径(特殊符号或者图片)来实现,然而利用 MathML标签可以非常方便简洁的去实现所有数学公式的显示,对于网页开发者来说何尝不是一项好用的新功能呢?
浏览器兼容及支持
从最初的设计阶段开始,MathML 的主要目标就是支持数学表达式作为文本而不是图像或含混的插件使用在 Web 页面中,以允许搜索、调整文本大小,等等。目前,相对于 XHTML 来说,一般人仍然更接受 HTML。XHTML 作为一个 XML 词汇表,是 HTML 的再形式化。初始意图是,XHTML 具有更严格的 XML 解析规则,作为 Web 的首选标记语言,将逐渐取代 HTML。但是,浏览器制造商和 Web 用户不太情愿切换,尤其是主流浏览器 Internet Explorer 仍然没有对 XHTML 的原生支持。
对于很多 (MathML2) Presentation MathML 构造,可以将 XHTML 和 MathML 混合在同一文档中。要获得对此类文档的跨浏览器支持,最简单的方式是遵循以下简单规则:
- 将文档作为格式良好的 XML 提供,其中 HTML 元素在 xhtml 名称空间中(http://www.w3.org/1999/xhtml),MathML 元素在 MathML 名称空间中(http://www.w3.org/1998/Math/MathML)。
- 使用 mime 类型:application/xhtml+xml。
- 确保在靠近文档顶部的位置声明 MathML 名称空间,最简单的做法是将名称空间声明 xmlns:m="http://www.w3.org/1998/Math/MathML" 放在 html 元素上。
Firefox(所有版本)将原生地呈现此类文档,尽管我们必须预先安装了适当的数学字体。
如果我们已经安装了 Design Science 提供的免费 MathPlayer 组件,那么 Internet Explorer(版本 6.0 及以后版本)也会呈现此类文档。(注:这种用 MathPlayer 来让 Internet Explorer 呈现 application/xhtml+xml 文档的做法应该得到推广,因为即使文档中没有数学表达式,也很有用)
Opera、Safari 以及其他没有显式 MathML 支持的浏览器仍然能够呈现此类文档,通过使用一个适当的 CSS 样式表即可做到。使用 CSS 来呈现 MathML 被分离到一个单独的规范:MathML for CSS。
获得跨浏览器支持的一种较老且更为强大的技术是,跟 Math/XSL 领域中描述的那样使用一个客户端 XSLT 样式表,或者跟 NAG 文档中所用的那样使用一个稍微更新的版本检测更现代的浏览器功能。XSLT 的使用越来越难以设置,尤其是随着浏览器的现代版本在 XSLT 的使用上放置的安全约束越来越多。但是它确实具有优势,XSLT 可以检测使用的浏览器并适当地进行转换,而不是限制于最小功能的浏览器。
除了使用客户端 XSLT 之外,还有第三种选择,那就是在服务器检测用户代理,并根据用户代理的功能提供不同的内容。详细情况取决于所使用的服务器环境,本文不做介绍。
认识到 XHTML 不可能完全取代 HTML,最近已经开始着手标准化一个更新的 HTML 规范,即 HTML5。HTML 5 的规范远远还未完成,但是当前草案指定,MathML 可直接用于 HTML 文档中,作为标准的 text/html mime 类型提供。所以,在不久的将来,有望在 Web 上直接放置 MathML,无需担心 mime 类型和服务器配置。
但是不必等待 HTML5 发布,也很容易处理使用 MathML 的文档,在 Firefox 和 Internet Explorer 中可以高清晰地呈现,在 Opera、Safari 以及其他具有合理 CSS 支持的浏览器中也很清楚。