From: http://hknng.3322.org/hknng/archive.php/article/880.html XML興起后,HTML派生出了XHTML。雖然這只多了一個(gè)字母X,卻賦予了原來(lái)的HTML以無(wú)限的生命力。這生命力就來(lái)源于其無(wú)限的擴(kuò)展能力(extensible)。舊有的HTML只有有限的標(biāo)簽,而XHTML的標(biāo)簽卻可以無(wú)限擴(kuò)展,這要?dú)w功于XML的命名空間(namespaces)的發(fā)明。在XHTML中,至少要加載XHTML命名空間,這樣我們就可以使用幾乎所有原來(lái)的HTML標(biāo)簽(當(dāng)然有些已經(jīng)被廢棄或者不贊成使用(deprecated))。在此基礎(chǔ)上,我們還可以加載其他命名空間,獲得擴(kuò)展的功能,例如MathML可以使網(wǎng)頁(yè)能嵌入數(shù)學(xué)公式,這是一項(xiàng)非常實(shí)用的技術(shù)。MathML的官方文檔可以從W3C的MathML主頁(yè)找到。 - XHTML嵌入MathML的方法
-
下面的例子說(shuō)明XHTML 1.0和MathML推薦標(biāo)準(zhǔn)聯(lián)合使用的方法: - <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>
不過(guò),上面這段代碼是不符合原來(lái)的XHTML的DTD實(shí)體定義的,因?yàn)槎喑隽薽ath等實(shí)體(或者說(shuō)標(biāo)簽)沒(méi)有在XHTML的DTD文檔中定義。W3C還正在努力解決該問(wèn)題。目前一種解決辦法是使用“XHTML plus Math 1.1 DTD”作DTD定義,這是一種聯(lián)合使用XHTML 1.1和MathML 2.0的DTD定義。使用的時(shí)候文件頭的定義為: - <?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定義問(wèn)題。 - 在瀏覽器上顯示MathML
-
上面這種做法在把文件擴(kuò)展名命名為xml(或者在服務(wù)器上輸出xml的文件頭)之后,已經(jīng)測(cè)試能夠被Firefox 1.5正確解析,也能通過(guò)W3C標(biāo)記語(yǔ)言驗(yàn)證器驗(yàn)證(當(dāng)然文檔的其它部分要符合XHTML 1.1規(guī)范),但不能被IE 6(沒(méi)有安裝插件)正確解析。擴(kuò)展名命名為html時(shí),則Firefox和IE均無(wú)能為力。但是擴(kuò)展名為xml時(shí),無(wú)法執(zhí)行javascript。 如果要IE能夠正確顯示MathML公式,可以加裝免費(fèi)的MathPlayer插件。不過(guò)有另一種不需要加裝插件的方法,就是使用XSLT樣式表把MathML解析成普通的HTML(需要IE 6版本)。具體的實(shí)現(xiàn)方法在:http://www.w3.org/Math/XSL/。 Firefox/Mozilla雖然有內(nèi)建的MathML支持,但有時(shí)候會(huì)因缺字體而不能完全正確顯示MathML公式,這可以通過(guò)下載這些字體解決。這些字體的列表在:http://www.mozilla.org/projects/mathml/fonts/。為方便Windows用戶,MIT提供了這些字體的打包下載及使用指導(dǎo)。 - 兩種MathML表達(dá)式
-
MathML有兩種表達(dá)方式,一為表現(xiàn)式(Presentation MathML),一為內(nèi)容式(Content MathML)。暫時(shí)發(fā)現(xiàn)表現(xiàn)式好像不太好用,例如沒(méi)有找到好使的絕對(duì)值符號(hào)(如果使用“|”,絕對(duì)值符號(hào)無(wú)法自動(dòng)伸縮,當(dāng)嵌套分式較多時(shí)絕對(duì)值符號(hào)就會(huì)變得太短)。暫時(shí)傾向于以使用內(nèi)容式為主,表現(xiàn)式為輔。不過(guò)還需多學(xué)習(xí)才能真正比較出兩者的優(yōu)劣。 - 學(xué)習(xí)資源
-
- 工具
-
|