网页的数学解决方案──MathML
针对这种现状,国际互联网协会(World Wide Web Consortium)召集世界上的有关知名公司和高校的专家共同合作,于1997年成立了W3C数学工作组,于1998年发布了MathML 1.0版本,1999年7月发布修订版MathML 1.01版本,更新版本的MathML 2正在起草中。
为了满足用户对数学表达式的接收、处理和服务的需求,MathML必须具备以下功能:能为各个层次的数学符号及其意义编码;能为不管是表达上还是语义上的数学格式之间的相互转换提供便利(其输出格式包括:图像显示、语音合成以及计算机代数系统输入其他的数学编排语言如TeX、普通文本显示、包括盲文在内的打印媒体等);允许用于特殊应用的信息传递;支持对长表达式的有效浏览;提供可扩展功能;能够与模板及其他数学编辑工具良好配合;对人友好,易于开发与使用等。
在实现上,W3C数学工作组对MathML也有额外要求:在HTML网页中的MathML方程式应该能在当今流行的浏览器中高质量地浏览显示以及打印输出;网页中的MathML方程式应能对鼠标的点击作出反应,并与其他应用程序通信;应该能开发方程式编辑器和转换器,以便于生成带有MathML方程式的网页等,如:使用Java appletsplug-ins和ActiveX控件等内置元件来产生MathML。
MathML应该能同时为用户交流信息,并表现为多种媒体的输入和输出提供专用的和通用的服务。在实际的应用中,MathML通常使用分层结构的形式。第一层包括对编码好的数学数据进行交换、处理以及表现的通用软件工具,第二层包括以特殊用户群体为目标的专门化软件工具,它能产生能为普通用户所共享的已被编码了的数学数据。
类似HTML的MathML标记语言包括两个部分:1.内容标记,用来作为方程式基本的数学结构编码;2.表现标记,它关注方程式的表现,而不关注其语义。
下面是MathML的一个小例子,用MathML表示(x+y)3。表现标记符,以m开头,形式的语句如下(其中运算符与mo结合,标识符即变量与mi结合):
<msup>
<mfenced>
<mrow>
<mi>x</mi>
<mo>+</mo>
<mi>y</mi>
</mrow>
</mfenced>
<mn>3</mn>
</msup>
为便于阅读和使用MathML,人们期望能够使用方程式编辑器、转化程序以及其他特定的软件工具来自动产生MathML,一些早期的这种工具已经存在,而另外一些,不管是免费软件还是商业软件,都仍在开发之中。