DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> MathML學習筆記
MathML學習筆記
編輯:XML詳解     

 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.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)。暫時發現表現式好像不太好用,例如沒有找到好使的絕對值符號(如果使用“|”,絕對值符號無法自動伸縮,當嵌套分式較多時絕對值符號就會變得太短)。暫時傾向於以使用內容式為主,表現式為輔。不過還需多學習才能真正比較出兩者的優劣。

  學習資源

  W3C的MathML官方主頁:http://www.w3.org/Math/

  一個MathML入門教程:http://www.dessci.com/en/support/mathtype/tutorials/mathml/default.htm

  一個MathML入門幻燈片:http://www.w3.org/Math/Documents/mathml-tutorial.pdf

  MathML 2 語言參考:http://www.zvon.org/xxl/MathML/Output/

  工具

  MathCast:開源的所見即所得公式編輯器,能輸出MathML格式;官方主頁:http://mathcast.sourceforge.Net/

  檢測浏覽器能否正確顯示xsl模式的MathML公式:

  表現性MathML:http://www.w3.org/Math/XSL/pmathml2.XML

  內容性MathML:http://www.w3.org/Math/XSL/csmall2.XML


XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved