| 注册 | 忘记密码
奇技淫巧 - 阅读主题
<<  <  1  >  >>

MathML学习笔记

好(0) 差(0) 阅读(8874) 评论(2)
Wen 给 Wen 发消息 给 Wen 发email
作者头像
等级:◆◆◆◆◇◇◇

本笔记随幽灵多啦学习过程不断修正和更新中...

XML兴起后,HTML派生出了XHTML。虽然这只多了一个字母X,却赋予了原来的HTML以无限的生命力。这生命力就来源于其无限的扩展能力(extensible)。旧有的HTML只有有限的标签,而XHTML的标签却可以无限扩展,这要归功于XML的命名空间(namespaces)的发明。在XHTML中,至少要加载XHTML命名空间,这样我们就可以使用几乎所有原来的HTML标签(当然有些已经被废弃或者不赞成使用(deprecated))。在此基础上,我们还可以加载其他命名空间,获得扩展的功能,例如MathML可以使网页能嵌入数学公式,这是一项非常实用的技术。MathML的官方文档可以从W3CMathML主页找到。

XHTML嵌入MathML的方法

下面的例子说明XHTML 1.0和MathML推荐标准联合使用的方法:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>A Math Example</title>
  </head>
  <body>
    <p>The following is MathML markup:</p>
    <math xmlns="http://www.w3.org/1998/Math/MathML">
      <apply> <log/>
        <logbase>
          <cn> 3 </cn>
        </logbase>
        <ci> x </ci>
      </apply>
    </math>
  </body>
</html>

不过,上面这段代码是不符合原来的XHTML的DTD实体定义的,因为多出了math等实体(或者说标签)没有在XHTML的DTD文档中定义。W3C还正在努力解决该问题。目前一种解决办法是使用“XHTML plus Math 1.1 DTD”作DTD定义,这是一种联合使用XHTML 1.1和MathML 2.0的DTD定义。使用的时候文件头的定义为:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN'
    'http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd'
    [<!ENTITY mathml 'http://www.w3.org/1998/Math/MathML'>]>

这样就解决了DTD定义问题。

在浏览器上显示MathML

上面这种做法在把文件扩展名命名为xml(或者在服务器上输出xml的文件头)之后,已经测试能够被Firefox 1.5正确解析,也能通过W3C标记语言验证器验证(当然文档的其它部分要符合XHTML 1.1规范),但不能被IE 6(没有安装插件)正确解析。扩展名命名为html时,则Firefox和IE均无能为力。但是扩展名为xml时,无法执行javascript。

如果要IE能够正确显示MathML公式,可以加装免费的MathPlayer插件。不过有另一种不需要加装插件的方法,就是使用XSLT样式表把MathML解析成普通的HTML(需要IE 6版本)。具体的实现方法在:http://www.w3.org/Math/XSL/

Firefox/Mozilla虽然有内建的MathML支持,但有时候会因缺字体而不能完全正确显示MathML公式,这可以通过下载这些字体解决。这些字体的列表在:http://www.mozilla.org/projects/mathml/fonts/。为方便Windows用户,MIT提供了这些字体的打包下载使用指导

两种MathML表达式

MathML有两种表达方式,一为表现式(Presentation MathML),一为内容式(Content MathML)。暂时发现表现式好像不太好用,例如没有找到好使的绝对值符号(如果使用“|”,绝对值符号无法自动伸缩,当嵌套分式较多时绝对值符号就会变得太短)。暂时倾向于以使用内容式为主,表现式为辅。不过还需多学习才能真正比较出两者的优劣。

学习资源
工具
Share/Save/Bookmark
最后修改:Wen 于 2007-02-07 10:23:58

发表于 2005-12-25 17:22:06

评论:Re: MathML学习笔记

好(0) 差(0) #1
kevin (过客)

谢谢您的文章


发表于 2009-06-12 18:50:06

评论:Re: MathML学习笔记

好(0) 差(0) #2
秋景雨 (过客)

MathML手动写好好复杂呀,可以用libreoffic写好公式之后导出成html。
http://www.qiujingyu.com/insert-math-formula-into-web-page.html


发表于 2012-10-07 00:36:54
奇技淫巧 - 阅读主题
<<  <  1  >  >>

Valid XHTML 1.0 | Valid CSS2 | WAI-A WCAG 1.0

Copyright 2005-2018 WEN'S Horizon [34/0.025]