在Visual Studio中调试XSLT

摘要:
根据XSLT文档中指定的要求以XML形式输出数据。我不记得是哪个版本的。NET中介绍了此控件。我们很容易在程序中加载和格式化XML输出。我们通常需要使用XSLT来解析XBRL实体文件。由于XSLT可以编写代码逻辑并支持简单的逻辑操作,因此我们可以很容易地使用它来调试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文件解析出各种不同的样式。

免责声明:文章转载自《在Visual Studio中调试XSLT》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS 调试技巧【windows】在控制面板卸载软件的时候,出现2502,2503的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

XML格式以及相关libxml库学习

本文参考 XML文件格式语法以及DTD,摘除其中自己认为必要的知识点,在此记录如下。 先给出一个xml的实例文件, <?xml version="1.0" encoding="utf-8"?> <gadget> <name>日历</name> <namespace> <...

Android Visibility控件显示和隐藏

Android控件显示和隐藏 visibility   可见(visible) XML文件:android:visibility="visible" Java代码:view.setVisibility(View.VISIBLE); 不可见(invisible) XML文件:android:visibility="invisible" Java代码:vie...

XML中的二进制文件的编码与解码[原创]

(一)把二进制文件放到XML中 using System;using System.Data;using System.IO;using System.Text;using System.Xml;using System.Configuration;using System.Collections;using System.Web;using Syste...

Web Service、WCF、WebAPI的区别(转载)

Web Service 1、它是基于SOAP协议的,数据格式是XML 2、只支持HTTP协议 3、它不是开源的,但可以被任意一个了解XML的人使用 4、它只能部署在IIS上  WCF 1、这个也是基于SOAP的,数据格式是XML 2、这个是Web Service(ASMX)的进化版,可以支持各种各样的协议,像TCP,HTTP,HTTPS,Named...