一、什么是MathML?数学置标语言(MathematicalMarkupLanguage,MathML)是一种基于XML的标准,用来在互联网上书写数学符号和公式的置标语言。目前,几个主要的网页浏览器中,最新版的Mozilla、MozillaFirefox和NetscapeNavigator都已经对MathML提供直接的支持。微软的InternetExplorer在安装了MathPlayer插件后也可以识别MathML。此外,MathML还得到了一些办公软件的支持,如OpenOffice.org和MicrosoftOffice。二、MathML的诞生与发展(1)MathMl的诞生HTML是最早应用与网络信息传递的标志语言,也是目前web上最普及的一种网页制作通用语言。但是,HTML有限支持数学表达式。1996年,W3C开始设计XML。受XML的启发,W3C于1997年开始设计MathMl。于是,MathMl诞生了。(2)MathMl的发展历史MathMl就是这样一种XML语言,它的定义就是为了解决在WEB中应用数学表达式的问题。他可以说是最“古老的”XML语言之一,完全采用XML的定义规范,可以表示几乎所有类型的公式。1998年4月7日,W3C组织发布了MathMl的1.0版本。2001年2月21日MathMl2.0版本正式发布。三、MathML的语法和结构MathML提供两种描述数学公式的标记:一种是表示型标记(Presentationmarkup)另一种是内容型标记(contentmarkup)。这两种标记都可以完整地描述任何一个数学公式,但是它们的侧重点不同:表示型标记:用来描述数学表达式的二维布局结构,它更注重表达式的显示方式;内容型标记:描述用于计算和处理的数学信息,它更关注表达式的内在含义。数学表达式的Content标记编码形式可能对应多种Presentation标记编码形式,表达式在Web浏览器中的具体显示形式由MathML处理程序决定。Presentation标记和Content标记使得Web中的数学信息不仅是机器能读的,而且是机器能理解的。二者可交叉使用形成混合编码,但不能相互替代。MathML的表示标记及分类(1)表征元素mi--标识符(变量,函数名,常量等)mn--数字mo--操作符、边界或分隔符mtext--文本mspace/--空格ms--字符串例:用MathML语言描述X-(3+Y);miX/mimo-/momo(/momn3/mnmo+/momiY/mimo)/moMathML的表示标记共有31个,并有50种属性,用于数学符号的编码。其较普遍的标记和分类如下:(2)一般的输出描述元素mrow--将任意数目的子表达式水平的分成一组,起到封装的作用mfrac--由两个子表达式形成一个分数msqrt--形成一个平方根mroot--形成一个有特定指数的根式mstyle--风格改变MathML的表示标记及分类例:对应的表示标记为:msqrtmrowmix/mimo+/momiy/mi/mrow/msqrtyx(3)角标和极限描述元素msub--下标msup--上标msubsup--上下标munder--正下标mover--正上标munderover--正上下标multiserints--多个垂直排列的施加于一个基的上标和下标MathML的表示标记及分类例如(表示型标记)X1::musbmiX/mimn1/mn/musbX2:muspmiX/mimn2/mn/musp•:msubsupmix/mimn1/mnmn2/mn/msubsup21X小结:用表示标记可以精确的控制一个表达式的外观,如在浏览器中的显示或在打印纸上的打印样式。MathML的表示标记元素主要是为了实现显示的目的来编写数学内容的。由于表示标记本身并不是很关注数学内容的结构和内容,它比内容标记需要更少的元素。MathML表示标记编码大多数是由嵌套布局元素组成的。例子如下:mathmrowmsupmix/mimn2/mn/msupmo+/momsupmiy/mimn2/mn/msupmo=/momsupmir/mimn2/mn/msup/mrow/math222xyr例-用MathML表示型标记编码MathML的内容标记MathML的内容标记由大约30种元素组成,支持的属性超过50种,多数元素是相似的,都是表述数学操作符和函数,比如正弦、求商等。(1)apply元素——内容标记中最基本的元素,明确参数的功能,充当封装的作用(2)cn——数字ci——标示符eq/——表示相等geq/——大于等于mathapplyeq/applycos/ciπ/ci/applyapplyminus/cn1/cn/apply/apply/mathcos1黄色部分代表=左边蓝色部分代表=右边例:用MathML内容型标记编码表示型标记,简单而直观:它按照符号的出现的次序来编码,比较符合人们的思维习惯,和平时朗读数学公式的方式是一致的,非常适合人机交流和对话。内容型标记的用途不在于人机交流了,而在于机器与机器之间的交流,它的用途不在显示上,而在于数学表达式本身的语义,由于公式(表达式)的结构很清晰,那么就很容易被数学工具分析、计算甚至推导,解析器可以从最里层开始,一层一层往外展开即可,并且可以判断相应的优先级。表示型与内容型的比较表示型标记编码:mathmicos/mimiπ/mimo=/momo–/momn1/mn/mathcos1注意:所有MathML部分都用一对math/math标记包起来,以便和其他内容区分,可以插到HTML等等的网页中。mathapplyeq/applycos/ciπ/ci/applyapplyminus/cn1/cn/apply/apply/mathMathML的接口标记MathML除了前两类标记外还包括接口标记,接口标记主要用来处理MathML和其他XML语言的接口问题,在HTML和XHTML中嵌入MathML主要涉及到XML命名空间Namespaces的声明和管理。MathML和XHTML共用一个XML框架,所以命名空间为在XHTML中嵌入MathML提供了一种标准的构造机制。一般来说都是以声明MathML的命名空间作为接口,即有两种声明MathMl命名空间的方法:(1)单独使用xmlns属性来说明,这时在此之间出现的元素及其子元素都默认属于MathMl的命名空间,格式如下:mathxmlns=“”mrow……/mrow/math(2)使用带有xmlns前缀的属性进行说明,这样可以通过特定的前缀连接其它的元素或者属性,格式如下:bodyxmlns:m=:mathm:mrow.../m:mrow/m:math.../body总结MathML是为了在Web上传递、接收和管理数学表达式而设计的一种标准,它的标记所具有的递归性和树状结构使得它在计算机程序的实现上更加方便,更加简单。MathML有很多针对网络应用的优势,比如它使用文本方式,比映像图的方式更节省存储空间,减少了对网络传输速度的影响,而且因为它是XML的一种应用,所以继承了XML的大部分优点。随着互联网的发展和MathML标准的完善,MathML将成为Web应用上最重要的数学公式标准,并在各学科领域内得到广泛的应用。Thankyou!