recordXML.ASPx
演示程序中的recordXML.ASPx演示了在客戶端執行XSLT轉換 ,打開這個頁面的C#代碼,在Page_Load函數中,可以看到是查詢數據庫並使用 XmlTextWriter輸出包含數據的XML文檔。其中有這麼一段代碼,首先判斷一個名為xsl的頁面 參數是否存在,若存在則調用xmlwriter的WriteProcessingInstruction方法輸出一段名為 xml-stylesheet的XML指令,這個指令的 href 屬性值就使頁面參數指定的XSLT模板文件名。
// 輸出XSLT樣式表信息頭
string strXSLRef = this.Request.QueryString["xsl"] ;
if( strXSLRef != null && strXSLRef.Length > 0 )
{
XMLwriter.WriteProcessingInstruction (
"XML-stylesheet" ,
"type='text/xsl' href='" + strXSLRef + "'");
}
客戶端浏覽器解析下載的XML文檔,若遇到這個 這段XML指令根據其中的href屬性下載XSLT模板文件,然後執行XSLT轉換,將生成的轉化結果 再作為Html文檔顯示出來。
在這個頁面中,服務器端只負責輸出數據XML文檔,並提 供XSLT模板文件下載,而XSLT轉換就給客戶端浏覽器處理,這樣就能減少服務器端的工作量 並利用客戶端的運算能力。
注意這裡的xml-stylesheet指令只對浏覽器有效,一般其 他的程序處理XML文檔時會忽略掉這個XML指令。即使我們在服務器端使用XslTransform對象 執行XSLT轉換,這個XML指令也是毫無作用的,就像不存在一樣。
使用C#執行XPath查 詢
演示程序中的recordxpath.ASPx就演示了使用C#執行XPath查詢。打開這個頁面的 界面設計,可以看到其界面是比較簡單地,其中一個單行文本框用於輸入XPath字符串,一個 大的多行文本框用於顯示查詢結果,還有一個按鈕用於點擊執行操作。頁面代碼主要在這個 按鈕的點擊事件處理中。
雙擊這個按鈕,可以看到該按鈕的點擊事件處理代碼。在該 處理中,首先調用CreateRecordXMLDocument函數來獲得包含數據的XML文檔對象,生成XML文 檔的過程可以參考record.ASPx的說明。
程序生成包含數據的XML文檔後,在從單行的 文本輸入框獲得用戶輸入的XPath字符串,若用戶輸入的內容,則對XML文檔的根節點調用 SelectNodes方法,執行XPath查詢,SelectNodes函數返回一個XmlNodeList列表,該列表中 的元素類型是XmlNode。我們遍歷這個列表,對其中每一個XML節點對象獲得它的XML字符串, 然後進行輸出。
若用戶沒有輸入XPath字符串,則直接輸出XML文檔根節點的內容。
在這裡我們定義了GetXMLString 函數,這個函數主要是返回指定的XML節點對象的帶 縮進的XML字符串。用於取代Xml節點的OuterXML屬性。
小結
在本課程中,我 們了解了XPath,XML/XSLT的基礎知識。並演示使用C#使用XPath和XML/XSLT技術。
XML及其派生的技術都是很重要的國際標准技術,對現代web開發具有很大的影響力, XML技術是一種優質的軟件開發技術,因此大家要花點時間好好學習,熟練掌握XML及其派生 技術將大大提高大家的軟件開發能力。