class="area">
學習
XML 的最佳途經是從簡單的開發入手,大膽實踐,循序漸進。XML 的妙處只有在開發過程中才能深入體會,離開了開發是學不好 XML 的。因此學習 XML 首先應該建立一個 XML 的開發環境。我給大家介紹一下怎樣建立一個基於 Java 的 XML 開發環境。因為我現在沒辦法用到
Linux,所以所有的例子都是在 Windows 上做的。但是這裡介紹的所有的軟件在 Linux 和 Windows 上都是可以用的,用法也大同小異。而且除了 Sun 的 JRE 以外都是 open source 軟件,任何人都可以拿來做任何用途,甚至是商業目的的重新發行。JRE 也是可以免費下載和使用的,只是沒有源代碼。如果您有在 Linux 上使用這些軟件的經驗,希望能貢獻給大家。
建立一個 XML 的開發環境需要經過以下步驟:
1。安裝 Java runtime environment
2。安裝一個 Java 編譯器。
3。安裝一個
JSP Container。
4。安裝一個支持 XSLT 的 taglib。
5。安裝一個 XML Parser。
6。安裝一個支持 XSLT 的浏覽器。
7。安裝一個 XML 文件的編輯器 (可選)。
步驟1。安裝 Java runtime environment
推薦使用 Sun 的 JRE 1.3,可以從這裡下載:
http://java.sun.com/j2se/1.3/jre/download-windows.html
注意:不是 JDK 1.3,我們需要的只是 JRE 1.3
下載完 JRE 1.3 後運行安裝程序,假設安裝在 C:\JRE1.3 下。然後需要設置三個環境變量。
JAVA_HOME=C:\JRE1.3
CLASSPATH=.;C:\JRE1.3\lib\rt.jar
PATH=%PATH%;C:\JRE1.3\bin
如果是 Windows 95/98/me,將環境變量的設置放在 Autoexec.bat 中,然後重啟機器,Windows NT/2000 在“我的電腦/屬性”中設置就可以了。
步驟2:安裝一個 Java 編譯器。
推薦使用 IBM 的 jikes,一個高效的 open source 的 Java 編譯器。jikes 的主頁在
http://oss.software.ibm.com/developerworks/opensource/jikes/
最新的版本是 1.1.3, 可以從這裡下載:
http://oss.software.ibm.com/pub/jikes/jikes-1_13-mingw-win32.zip
下載後解壓縮,得到一個 jikes.exe,放在任何 PATH 環境變量中的目錄下,比如 C:\JRE1.3\bin
編輯一個簡單的 hello world 程序試一下:
// hello.java
public class hello {
public static void main(String [] args) {
System.out.print("hello, world!\n");
}
}
然後編譯
jikes hello.java
如果生成了 hello.class 就可以用了。
步驟3。安裝一個 JSP Container。
推薦使用 Jakarta 的 Tomcat 3.2.1。Tomcat 3.2.1 可以從這裡下載:
http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.2.1/bin/
你需要下載 jakarta-tomcat-3.2.1.zip 這個文件
如果你是在 Windows NT/2000 下安裝,還有 win32/i386 目錄下的 jk_nt_service.zip 。
下載後解壓縮,假設放在 C:\tomcat 下
然後需要設置一個環境變量
TOMCAT=C:\tomcat
為了使 Tomcat 可以使用 jikes,你需要做一點點的 hack,方法如下:
將 tomcat 的 lib 目錄下的 parser.jar,jaxp.jar,webserver.jar 加入環境變量 CLASSPATH,使其生效後執行以下步驟:
cd \tomcat\src\org\apache\tomcat\context
編輯文件 WebXmlReader.java,將
// sw.addInitParam("jspCompilerPlugin", "org.apache.j
asper.compiler.JikesJavaCompiler");
前的注釋去掉
然後編譯
jikes WebXmlReader.java
建立一個臨時目錄,使用 jar 工具(可以從 JDK 中獲得) 解壓縮 Tomcat 的 lib 目錄下的 webserver.jar
mkdir t
cd t
jar xvf ..\webserver.jar
將 org\apache\tomcat\context 下的 WebXmlReader*.class 替換為剛才編譯生成的 WebXmlReader*.class
然後重新打包:
jar cf webserver.jar .
使用新的 webserver.jar 替換 Tomcat 的 webserver.jar
編輯 Tomcat 的 conf 目錄中的 web.xml,將
外的注釋去掉。
編輯 Tomcat 的 bin 目錄中的 tomcat.bat,將所有的 tools.jar 替換為 rt.jar
啟動 tomcat,運行 bin 目錄中的 startup.bat。
使用浏覽器做一下測試,訪問
http://localhost:8080
如果 JSP 和 Servlet 的例子都能編譯和運行,Tomcat 就可以用了。
停止 Tomcat 用 shutdown.bat
在 Windows NT/2000 下,可以把 tomcat 安裝為一個 service,方法如下:
將 Tomcat 的 conf 目錄下的 wrapper.properties 拷出來並編輯。將其中的兩個變量
wrapper.tomcat_home
wrapper.java_home
分別設置為 TOMCAT 和 JRE 的安裝路徑,將所有的 tools.jar 替換為 rt.jar。
然後運行
jk_nt_service -I Tomcat wrapper.properties
其中 Tomcat 是我們安裝的 service 的名稱。
進入控制面板中啟動 Tomcat service。Tomcat service安裝後設置為手工啟動,你可以修改 Tomcat service 的屬性使其成為自動啟動。
刪除 Tomcat service 用:
jk_nt_service -R Tomcat
步驟4。安裝一個支持 XSLT 的 taglib。
推薦使用 Jakarta Taglibs 中做 XSLT 的 XSL Taglib
其頁面在 http://jakarta.apache.org/taglibs/doc/xsl-doc/intro.html
從該頁面上下載 XSL Taglib 的 snapshot。你也可以下載全部的 Jakarta Taglibs,Jakarta Taglibs 的范圍很廣,但是這裡我們要用到的僅僅是其中的 XSL Taglib。
下載完後解壓縮,將其中的 xsl-examples.war 和 xsl-doc.war 這兩個文件拷到 Tomcat 的 webapps 目錄下,然後重新啟動 Tomcat。使用浏覽器訪問
http://localhost:8080/xsl-examples/
運行頁面中的 Apply.jsp,如果沒有出錯,顯示了一個有很多表格的頁面,XSL Taglib 就可以用了。
XSL Taglib 的文檔也裝好了,在
http://localhost:8080/xsl-doc/
你可以從這個例子出發,一步一步地開始寫你自己的 XML 處理程序。比如你可以在 Tomcat 的 server.xml 中添加一個新的 Context
docBase="path-to-your-work-directory"
crossContext="false"
debug="0"
reloadable="true" >
其中的 path-to-your-work-directory 是你的開發目錄。將 Tomcat 的 webapps/xsl-examples 目錄下的內容原封不動的拷到你的開發目錄,以這個程序為參考開始寫你自己的 XML 處理程序。
關於如何使用 JSP 做 XML 開發可以參考 Sun 的 whitepaper ,在:http://java.sun.com/products/jsp/pdf/JSPXML.pdf
講的基本上就是我上面告訴你的這種方法。
步驟5。安裝一個 XML Parser。
做完了步驟3 和 步驟4,你已經有了兩個可用的 XML Parser 了,那就是 Tomcat 本身使用的 Sun 的 JAXP 和 XSL Taglib 使用的 xml.apache.org 的 Xerces。JAXP 包括兩個文件 parser.jar 和 jaxp.jar,Xerces 只有一個文件 xerces.jar,這幾個文件可以從 Tomcat 的目錄下找到。
推薦使用 Xerecs 這個 XML Parser,因為它目前已經可以支持 XML Schema,並且它是 open source 軟件。但是這完全是出於個人喜好,Sun 的 XML Parser 也是非常出色的。決定使用哪個 XML Parser 後將其文件加入到 CLASSPATH 中。但是不要同時使用兩個 XML Parser。CLASSPATH 生效後你就可以在你的 Java 程序中使用 JDOM 和 SAX 的 API 處理 XML 文件了。
關於 JDOM 和 SAX 適用的場合和用法的例子可以從這裡找到:http://developerlife.com
步驟6。安裝一個支持 XSLT 的浏覽器。
這一步並不是必須的,因為我們現在已經可以在 Server 端使用 XSL Taglib 將 XML 文件轉換為 HTML 格式後發給 Browser,所以實際上你可以使用任何你喜歡的浏覽器。但是安裝一個支持 XSLT 的浏覽器可以方便我們的學習。雖然現在我們需要在 Server 端做 XSLT,但是將來支持 XSLT 的浏覽器流行了之後我們甚至連這一步都可以省掉,直接把 XML 和 XSL 文件發給浏覽器就行了。這樣就可以大大減輕 Server 端的負擔,因為做 XSLT 可不是一件輕松的工作。
推薦使用 Mozilla 0.8。說到這裡,你可能又要問了,為什麼不使用 IE 4/5 呢?IE 4/5 不是也可以做 XSLT 嗎?除了個人喜好以外,我可以舉出 3 個使用 Mozilla 的理由:
首先 Mozilla 支持的 XSLT 版本比 IE 4/5 要新,IE 4/5 支持的 XSLT 不是正式版本,而是一個草稿。即:http://www.w3.org/TR/WD-xsl ,而 Mozilla 支持的 XSLT 是 XSLT 的正式版本。即:http://www.w3.org/1999/XSL/Transform 。
其次 Mozilla 中的 XML 應用不僅包括 XSLT,還包括 RDF,XUL,SVG,MathML 等等,所以 Mozilla 對 XML 的支持從廣度和深度上都要超過 IE 4/5。
第三 XML FAQ 的作者對 Mozilla 推崇有加,認為 Mozilla 對 XML 的支持在魯棒性上比 IE 4/5 要好得多。
OK,說了這麼多,現在轉到正題上來,如何使 Mozilla 0.8 支持 XSLT?
首先,從這裡下載 Mozilla 0.8:http://www.mozilla.org/releases/
最新的是 0.8.1 版,但是這個版本安裝了支持 XSLT 的模塊後無法運行,所以目前還只能使用老一點但是比較慢的 0.8 版。
如果你不想再要其它諸如 SVG/MathML 的功能的話,最方便的方法是使用做好的 .exe 文件安裝。
安裝