程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#發現之旅第二講 C#-XSLT開發(5)

C#發現之旅第二講 C#-XSLT開發(5)

編輯:關於C語言

在傳統的WEB 開發中,我們都是直接使用業務系統拼湊出HTML字符串來生成要顯示的Html頁面。雖然在 ASP.Net中大量使用Web控件來簡化開發,但web控件內部還是拼湊HTML字符串的。使用程序代 碼來拼湊HTML字符串會影響程序代碼的可讀性,很容易使得程序代碼雜亂無章,而且生成的 Html可讀性差。

若使用XML/XSLT技術則可以有效的改善這種情況,由於XML文檔格式 檢查非常嚴格,因此這就使得程序代碼生成XML文檔過程准確,不得出現錯誤,在這個環境下 迫使程序員注意保持程序代碼質量。而且生成的XML文檔不只用於生成Html頁面,還能方便的 向其他程序模塊提供數據,並可充當WebService。

考察WEB應用中生成的HTML代碼, 可以發現,大量的HTML頁面中用於實現頁面各種動態效果和頁面格式的HTML代碼多於直接顯 示數據的HTML代碼,而且HTML代碼普遍重復。這使得HTML頁面代碼臃腫,文件大,這會使得 客戶端浏覽器下載頁面緩慢。當采用XML/XSLT技術並在客戶端執行XSLT轉換時,由於服務器 端發送的XML文檔非常簡潔,只包含純粹的數據,並沒有其他冗余的代碼,因此文檔小,下載 快。與之配套的XSLT模板也是經過分析處理的,代碼重復少,因此XSLT文件也小,這樣客戶 端浏覽器以前要下載一個很大的Html文檔,而現在只要下載兩個較小的文檔,這縮短了浏覽 器下載數據的時間。

除了改善數據傳輸過程,浏覽器自己執行XSLT轉換,這樣能將一 部分的工作量從服務器端轉移到客戶端,此時服務器端只要快速生成包含數據的XML文檔即完 成工作。由於XSLT是廣泛采用的國際標准,此時WEB系統能可靠的使用客戶端的運算能力,從 而減少服務器端運算壓力,而利用客戶端長期閒置的運算能力。

雖然XML/XSLT技術具 有很大的優勢,但在實際開發中仍然存在不小的問題,其中最大的問題就是編制XSLT模板文 件成本高。我們在開發WEB系統中使用了很多開發工具,包括VS.Net的WEB窗體設計器,美工 人員使用的FrontPage,Dreamwave等等,都是用於生成HTML文檔的,而HTML文檔要求不嚴格 ,很多內容還不符合XML規范,因此需要使用各種方法將這些HTML文檔轉換為標准的XML文檔 ,然後還需要分析頁面結構,將這些XML文檔加工成XSLT文檔。在目前的技術條件下,這個過 程成本比較大,使得XML/XSLT技術難於推廣和普及。在此建議大家多多思考,如何低成本的 將Html文檔轉換為XSLT文檔。

而且XML/XSLT技術調試比較困難,對開發者要求很高, 這也加大了這個技術的應用成本。而且目前的web系統中大量使用的WEB控件沒有考慮到 XML/XSLT技術,這也阻礙了這種新技術的應用。

使用C#執行XSLT轉換

在演示 程序中,其中有些代碼就是使用C#來執行XSLT轉換的。

record.ASPx

演示程序 中record.ASPx演示了在服務器端執行XSLT轉換,打開這個頁面的C#代碼中,在Page_Load函 數中,首先是查詢數據庫並生成一個包含數據的XML文檔。然後我們使用了一個名為xsl的頁 面參數,這個參數就指定了使用XSLT模板文件。若用戶指定了該參數,我們開始執行XSLT轉 換。

首先是創建一個XslTransform對象,調用它的Load函數來加載用戶指定的XSLT模 板文件,然後調用它的Transform函數,這個函數有四個參數,第一個就是包含數據的XML文 檔對象,第二個是XSLT轉換參數的列表,此處未用,第三個就使輸出轉換結果的流對象,我 們就使用頁面輸出流,最後一個是XML文檔解析對象,此處未用。

string strXSLRef = this.Request.QueryString["xsl"] ;
if( strXSLRef != null && strXSLRef.Length > 0 )
{
  // 根據頁面參數指定的 XSLT樣式表名稱執行XSLT轉換
  strXSLRef = this.Server.MapPath( strXSLRef );
  System.Xml.Xsl.XslTransform transform = new System.XML.Xsl.XslTransform();
  transform.Load( strXSLRef );
   transform.Transform( XMLDoc , null , this.Response.Output , null );
}

可以看到在C#中執行XSLT轉換是非常簡單的,只要創建一個XslTransform對 象,使用Load函數加載XSLT模板,使用Transform函數來執行XSLT轉換即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved