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