From: http://hknng./hknng/archive.php/article/880.html
XML兴起后,HTML派生出了XHTML。虽然这只多了一个字母X,却赋予了原来的HTML以无限的生命力。这生命力就来源于其无限的扩展能力(extensible)。旧有的HTML只有有限的标签,而XHTML的标签却可以无限扩展,这要归功于XML的命名空间(namespaces)的发明。在XHTML中,至少要加载XHTML命名空间,这样我们就可以使用几乎所有原来的HTML标签(当然有些已经被废弃或者不赞成使用(deprecated))。在此基础上,我们还可以加载其他命名空间,获得扩展的功能,例如MathML可以使网页能嵌入数学公式,这是一项非常实用的技术。MathML的官方文档可以从W3C的MathML主页找到。
- XHTML嵌入MathML的方法
-
下面的例子说明XHTML 1.0和MathML推荐标准联合使用的方法:
- <html xmlns="http://www./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./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./TR/MathML2/dtd/xhtml-math11-f.dtd‘
- [<!ENTITY mathml ‘http://www./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./Math/XSL/。
Firefox/Mozilla虽然有内建的MathML支持,但有时候会因缺字体而不能完全正确显示MathML公式,这可以通过下载这些字体解决。这些字体的列表在:http://www.mozilla.org/projects/mathml/fonts/。为方便Windows用户,MIT提供了这些字体的打包下载及使用指导。
- 两种MathML表达式
-
MathML有两种表达方式,一为表现式(Presentation MathML),一为内容式(Content MathML)。暂时发现表现式好像不太好用,例如没有找到好使的绝对值符号(如果使用“|”,绝对值符号无法自动伸缩,当嵌套分式较多时绝对值符号就会变得太短)。暂时倾向于以使用内容式为主,表现式为辅。不过还需多学习才能真正比较出两者的优劣。
- 学习资源
-
- 工具
-
|