在Visual Studio中调试XSLT

      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的调试。

9-17-2009 9-40-49 AM

 

               9-17-2009 9-41-45 AM

       XSLT是用来解析XML的,所在,调试的时候只需要有这两个文件就足够了,并不需要实际的运行环境或者页面。有两种方法可以启动XSLT调试,除了上面给出的两个菜单位置外,你可以在XML文件中设置断点,或者在XSLT文件中设置断点,个人比较倾向于后者,因为解析过程中的关键算法都写在XSLT文件中,直接设置断点在调试时实时跟踪各个变量的值是最直观地。
      点击Debug XSLT,如果你是通过XML文件进行调试的,Visual Studio会弹出选择XSLT文件的对话框;如果你是通过XSLT文件进行调试的,Visual Studio会弹出选择XML文件的对话框。选择文件后XSLT便开始尝试去解析对应的XML文件,如果遇到断点则停下来,这时你可以像调试C#代码一样调试XSLT。

9-17-2009 10-00-00 AM

      解析的结果会显示在右边的窗口中,最终的结果应当会是一段相对完整的HTML,这要取决于你的XSLT文件中的定义。
      如果你在编写复杂XSLT文件时经常遇到问题,不妨可以使用Visual Studio提供的这个调试工具进行XSLT的调试,相信你也可以编写出功能非常强大的XSLT文件,从而将XML文件解析出各种不同的样式。
posted @ 2009-09-17 10:08  Jaxu  阅读(2460)  评论(2编辑  收藏  举报