DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> XML學習教程 >> XML詳解 >> XML在B/S架構開發中的應用
XML在B/S架構開發中的應用
編輯:XML詳解     

傳統上, 我們利用JSP+Bean來開發用戶界面, 這裡介紹一種利用XML+XSLT的方法來替代JSP

動機:

1. JSP構造頁面太痛苦. 代碼嵌入頁面導致頁面臃腫, 邏輯復雜, 不易編輯.

2. 程序員和美工的接口必須精確定義. 復雜的嵌套輸出必須構造復雜的顯示類作為接口.

3. 調試JSP必須等到前端程序結束才能看到效果.

3. 調試JSP效率極低, 一點點小的修改都會引起JSP的重新編譯.

新的XML的解決方案:

1. 一個servlet做統一管理. 接受url請求, 映射到對應的程序bean.

2. 程序bean只產生XML, 由servlet統一用對應的XSL轉換為Html.

好處:

1. JDK1.4已經自帶XML API和XSLT, 並且支持XSLT 1.0標准. IE6也支持同樣標准.

2. 開發前先制作接口用的demo XML, 程序員的輸出必須符合此格式. 美工根據此格式制作XSL. 接口可視化, 明確定義.

3. 只要定義好接口XML, 兩邊幾乎不需要再聯合調試. 美工利用接口XML和IE6就可以直接看到效果.

4. 程序員只要保證輸出的XML的是否符合接口, 直觀的做文字性對比.

5. 大量頁面可重用的部分能方便的抽象出來, 在XSL文件中include/import進來. 高度重用, 標准化.

6. 寫XSL可大量采用template, 結構清晰, 修改方便, 寫頁面變成搭積木, 不再有JSP的層層嵌套.

7. 對於不同的終端設備, 可以定制不同的XSL, 很方便的就能夠支持手機, pda

8. 在程序中利用支持XML的工具, 比如sql2000, 可以直接生成XML結果, 無需復雜編程.

壞處:

1. 因為要進行XSLT轉換, 服務器工作量稍微增大.

以下是幾個關鍵環節的簡單示例:

◆servlet中的XML轉換

/**
* XML是String
* XSL從文件中讀取
* 直接寫入response
*/
//import javax.XML.transform.*;
//import Javax.xml.transform.stream.*;

StreamSource XML = new StreamSource
(new StringReader(XMLSource));
StreamSource xsl = new StreamSource(xslFileName);

response.setContentType("text/Html; charset=UTF-8");
StreamResult result = new 
StreamResult(response.getWriter());

Transformer trans = TransformerFactory.newInstance()
.newTransformer(xsl);
trans.setOutputProperty("encoding","UTF-8");
trans.transform(XML, result);

◆接口XML文件樣本

<?xml version="1.0" encoding="UTF-8"?>
<?XML:stylesheet type="text/xsl" href="xxx.xsl"?>
<page>
<output>
<info>推廣UNICODE, 解決多語言問題.</info>
</output>
</page>

◆XSL文件樣本

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" XMLns:xsl=
"http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Html>
<head>
<meta http-equiv="Content-Type" 
content="text/html; charset=UTF-8"/>
</head>
<body>
<p align="center">
<xsl:value-of select="page/output/info"/>
</p>
</body>
</Html>
</xsl:template>
</xsl:stylesheet>

考慮:

1. 可以把XSLT轉換放在IE進行, IE6以下版本要安裝MSXML3, 對客戶端限制太多.

2. 在客戶端的XSLT轉換必須完全讀入XML+XSL, 在網速不高或者內容很多的時候反應相當遲鈍.

3. 手機, pda等設備不能進行XSLT轉換, 所以XSLT轉換還是放在服務器上比較合適.

4. 因為一般提交內容都比較簡單, 所以沒有采用XML處理, 在程序中也盡量少用XML, 避免影響速度.

5. 可以在servlet判斷特定參數, 比如發現有xml-vIEw參數時, 不做XSLT轉換, 直接輸出XML到浏覽器, 供程序調試用.

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