XSLT (eXtensible Stylesheet Language Transformation) 是一種用來轉換XML文檔結構的語言。
相信大家對XML已經並不陌生了,它是一種電腦程式間交換未經處理資料的簡單而標準的方法,HTML是一種特殊的XML,XSLT本身也是一種XML,只不過前者用來在瀏覽器中展示特定的文本資訊,後者則被用來格式化XML中的資料,按照XSLT文檔中指定的要求輸出XML中的資料。可以毫不誇張地說,XSLT之於XML就好比CSS之於HTML。有關XSLT更加詳細的介紹和使用,讀者可以參考W3School中有關XSLT的部分。
在Visual Studio中開發和使用XSLT是非常方便的,這要歸功於Microsoft的XML控制項,我不太記得這個控制項是在.NET的哪個版本中開始引入的,不過自從有了這個控制項,我們在程式中載入和格式化XML輸出就變得異常輕鬆。網上有很多介紹XML控制項的文章和例子,使用起來大概是這個樣子: <asp:Xml ID="xmlContent" runat="server" DocumentSource="~/xbrl/XBRL.xml" />
1 xmlContent.TransformSource = "~/xsl/IncomeStatement.xslt";
2
3 xmlContent.TransformArgumentList = new System.Xml.Xsl.XsltArgumentList();
4 xmlContent.TransformArgumentList.AddParam("Quarter", string.Empty, currentQuarter.Number);
5 xmlContent.TransformArgumentList.AddParam("Year", string.Empty, currentQuarter.Year);
6 xmlContent.TransformArgumentList.AddParam("StatementType", string.Empty, FinancialTable.ToString());
在XML控制項中可以直接通過DocumentSource屬性指定要載入的XML檔案,XSLT檔案也可以在前台代碼中通過TransformSource屬性來指定,上例中的後台代碼主要是為了給XSLT檔案傳遞三個參數,以便在解析XML檔案時可以根據這三個參數的值做一些判斷運算。
在一般的應用中,當XML檔案的結構簡單時,我們幾乎可以自己編寫指令碼來完成所有的格式化工作,這毫不費力!而且即使使用XSLT來解析,遇到問題也可以非常直觀地去修改。但是如果要解析的XML檔案非常龐大和複雜,例如在XBRL (eXtensible Business Reporting Language, 通用業務報告語言) 中,我們通常都需要使用XSLT來解析XBRL實體檔案,進而產生許多複雜的企業財務報表。這個時候如果遇到錯誤,直觀地去觀察代碼很難發現錯誤。既然XSLT中可以編寫代碼邏輯並支援簡單的邏輯運算,那麼它可不可以調試呢?就像我們調試C#代碼一樣!
網上有很多專門用於調試XSLT代碼的工具,不過都不是很理想。事實上,Visual Studio就提供了很好的XSLT調試器,而且是整合在開發環境中的,我們可以非常容易地使用它來進行XSLT的調試。
XSLT是用來解析XML的,所在,調試的時候只需要有這兩個檔案就足夠了,並不需要實際的運行環境或者頁面。有兩種方法可以啟動XSLT調試,除了上面給出的兩個菜單位置外,你可以在XML檔案中設定斷點,或者在XSLT檔案中設定斷點,個人比較傾向於後者,因為解析過程中的關鍵演算法都寫在XSLT檔案中,直接設定斷點在調試時即時跟蹤各個變數的值是最直觀地。
點擊Debug XSLT,如果你是通過XML檔案進行調試的,Visual Studio會彈出選擇XSLT檔案的對話方塊;如果你是通過XSLT檔案進行調試的,Visual Studio會彈出選擇XML檔案的對話方塊。選擇檔案後XSLT便開始嘗試去解析對應的XML檔案,如果遇到斷點則停下來,這時你可以像調試C#代碼一樣調試XSLT。
解析的結果會顯示在右邊的視窗中,最終的結果應當會是一段相對完整的HTML,這要取決於你的XSLT檔案中的定義。
如果你在編寫複雜XSLT檔案時經常遇到問題,不妨可以使用Visual Studio提供的這個調試工具進行XSLT的調試,相信你也可以編寫出功能非常強大的XSLT檔案,從而將XML檔案解析出各種不同的樣式。