曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
呈現給用戶。
2.服務器將XSL 樣式單應用于XML 文檔,以便此文檔能夠變換成其他某種格式(通常為HTML),并把變換后的文檔發送到
客戶端程序(Web 瀏覽器)。
3.第三個程序將原XML 文檔變換成其他某種格式(常常為HTML)后,才把此文檔放置在服務器上。服務器和客戶程序只處
理變換后的文檔。
這三種方法盡管都使用相同的XML 文檔和XSL 樣式,但每一種都使用不同的軟件。將XML 文檔發送到Internet Explorer 5.0
的普通Web 服務器使用的就是第一種方法。使用IBM alphaWork 的XML 功能與服務小程序兼容的Web 服務器就是第二種方法
的例證。使用命令行XT 程序來將XML 文檔變換成HTML 文檔,然后將HTML 文檔放置在Web 服務器上,采用的就是第三種方
法。但是,這些方法都使用(至少在理論上是如此)相同的XSL 語言。
本章中,我將重點介紹第三種方法,其主要原因是在撰寫本書時,像James Clark 的XT 或IBM 的LotusXSL 這樣的專用轉換
程序能夠最完善、最精確地實現目前的XSL 規范。此外,該方法提供了與先前的Web 瀏覽器和服務器的最廣泛的兼容性,而
第一種方法要求瀏覽器比大多數用戶使用的更新;第二種方法要求專門的Web 服務器軟件。但是,實際上,要求不同的服務
器比要求特定客戶來得簡單。因為可以安裝自己的專門服務器軟件,但不能要求用戶都安裝特定的客戶軟件。
14.2.4 如何使用XT
XT 是Java 1.1 的字符模式的應用程序。要使用它,需要安裝與Java 1.1 兼容的虛擬機,如Sun 的Java 開發包(Java
Development Kit,JDK)或Java 的運行時環境(Java Runtime Environment,JRE)、Apple 的Macintosh Runtime for Java
2.1(MRJ)或Microsoft 的虛擬機。還需要安裝符合SAX 的XML 分析程序,如James Clark 的XP,這也是一個Java 應用程
序。
在撰寫本書時,可在http://www.jclark.com/xml/xt.html 站點上找到XT 程序,而在訪問
http://www.jclark.com/xml/xp/index.html 處找到.XP 程序。當然,這些URL 都隨時間可能發生變化。甚至無法擔保在你
讀到此書時XT 就能存在。但是,盡管我在本章中使用XT,但使用任何XSL 處理程序(執行1999 年4 月21 日制定的XSL 規
范工作草案的樹形結構部分)時,這些實例都能運行。另外的可能性是IBM alphaWork 的LotusXSL(可在
http://www.a1phaworks.ibm.com/tech/LotusXSL 處得到)。當使用執行XSL 近期草案標準的軟件時,這些例子可能運行,
也可能不運行,盡管我希望這些例子更接近于近期標準。我將在我自己的Web 站點
(http://metalab.unc.edu/xml/books/bible/)上發布任何更新內容。
含有XT main 方法的Java 類是com.jclark.xsl.sax.Driver。假設Java 的CLASSPATH 環境變量包括xt.jar 和sax.jar 文
件(這兩個文件在XT 發行版中),那么在命令解釋程序的提示符或DOS 窗口中鍵入下面的代碼,即可運行XT:
C:\>java
-Dcom.jclark.xsl.sax.parser=com.jclark.xml.sax.CommentDriver
XML 實用大全
第 452 頁
com.jclark.xsl.sax.Driver 14-1.xml 14-2.xsl 14-3.html
這一命令行運行java 解釋程序,將com.jclark.xsl.sax.parser Java 的環境變量設置為
com.jclark.xml.sax.CommentDriver,后者表示用于解析輸入文檔的Java 類的完整名稱。此類必須在類路徑中。此處我使
用XP 語法分析器,但任何符合SAX 的語法分析器都可以做到。接下來就是含有XT 程序的main()方法的Java 類名稱
(com.jclark.xsl.sax.Driver)。最后,是輸入XML 文檔(14-1.xml)、輸入XSL 樣式單(14-2.xsl)和輸出的HTML 文件
(14-3.html)的名稱。如果忽略最后一個參數,那么變換后的文檔將打印在控制臺上。
如果正在使用Windows,并已安裝了Microsoft Java 虛擬機,就可以使用XT 的單機可執行版。這樣,由于它包括
XP 語法分析器,并且不要求提供CLASSPATH 環境變量,所以使用起來就稍微容易一些。對于本程序,可簡單地將
xt.exe 文件放置在自己的路徑中,并鍵入下列句子:
C:\> xt 14-1.xml 14-2.xsl 14-3.html
清單14-2 像第6 章討論過的那樣將輸入文檔變換成結構整潔的HTML 文件。但是,只要編寫的樣式單支持這種變換,則可從
任何XML 應用程序變換到其他應用程序。例如,可以設想有這樣的一個樣式單,它把VML 文檔變換到SVG 文檔:
% java
-Dcom.jclark.xsl.sax.parser=com.jclark.xml.sax.CommentDriver
com.jclark.xsl.sax.Driver pinktriangle.vml
VmlToSVG.xsl -out pinktriangle.svg
當然,盡管其他大多數命令行XSL 處理程序具有不同的命令行參數和選項,但它們的表現形式相似。如果這些程序不是用
Java 來編寫,由于不需要配置CLASSPATH,使用起來可能稍微容易些。
清單14-3 顯示的是通過XT 使用清單14-2 中的XSL 樣式單來運行清單14-1 時的輸出結果。請注意,XT 并不簡化它所產生
的具有許多空白的HTML。但這并不重要,因為最終是在Web 瀏覽器中瀏覽此文件,而Web 瀏覽器又會將空白截去。圖14-2
顯示的是加載到Netscape Navigator 4.5 中的清單14-3。由于清單14-3 顯示標準的HTML,所以不需要具有XML 功能的瀏
覽器來瀏覽此文檔。
清單14-3:將清單14-2 中的樣式單應用于清單14-1 中的XML 后產生的HTML
<html>
<P>
Hydrogen
H
1
1.00794
XML 實用大全
第 453 頁
20.28
13.81
0.0899
</P>
<P>
Helium
He
2
4.0026
4.216
0.95
0.1785
</P>
</html>
圖14-2 將清單14-2 中的XSL 樣式單應用于清單14-1 中的XML 而生成的頁面
14.2.5 直接顯示帶有XSL 樣式單的XML 文件
無需預處理XML 文件,就可以向客戶端發送XML 文件和描述如何顯示此文件的XSL 文件。客戶程序負責將樣式單應用于文檔,
并按照要求加以顯示。這種情況要求客戶端所做的工作更多,但服務器的負載要小得多。在這種情況下,XSL 樣式單必須將
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(128)