XSLT学习笔记--NET Framework对XSLT的支持(2)
1. 在XSL文档中调用.net代码
在XSLT中使用<msxsl:script>标签可以包含C#,VB.NET或其他.NET语言的代码。XslTransform类将把这些脚本语言转换为中间语言。另外也可以在script块中简单地调用现有的商业组件而不是把商业逻辑包含在XSL文档中。
例如,如果我们希望在例1的上方显示今天的日期。下面的XSL文件演示了我们调用XSL中定义的服本方法所需做出的改变。更改的地方使用了粗体。
在“msxsl:script”上层,需要引用“urn:schemas-microsoft-com:xslt”命名空间。所有用户定义的脚本需要在“Testing”前缀的下方。请参看参考一节获得更多的使用<msxsl:script>的信息。
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<msxsl:script language="C#" implements-prefix="Testing">
<![CDATA[
public string getDate(){
return (DateTime.Today.ToShortDateString());
}
]]>
</msxsl:script>
<xsl:output method="html" encoding="utf-8" />
<xsl:template match="/PrakashFinancial">
<xsl:text>
List of Employees :
</xsl:text>
<xsl:value-of select="user:getDate()"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="/PrakashFinancial/Employee">
<xsl:value-of select="@Name"/>
</xsl:template>
</xsl:stylesheet>
注意:XSLT支持很多内建的方法,首先需要看看是否这些任务可以通过XSLT已有的方法来完成。我们推荐使用脚本来做一些复杂的事情,以扩展XSLT的功能,或用现有组件重用一些商业逻辑。
2. ASP.NET对XSLT的支持
如果你有XML文档和XSL文档,并希望在服务器端处理XSLT并返回最终结果,可以使用ASP.NET现有的web server控件。<asp:xml>可以正确地完成这个功能。<asp:xml>web server控件可以对XML文档和XSL文档进行转换并在浏览器显示结果。
在ASP.NET使用XML控件非常容易,按照下面步骤操作:
3.a 创建一个ASP.NET web应用程序
3.b 拷贝上面的XML和XSL文件到“SampleData.XML”和“SampleTransform..XSL”文件中并把它们拷贝到web应用程序的根目录中。
3.c 拖动【工具箱】中的【WebForm controls】栏下的【Xml】控件到WebForm1.aspx中。
3.d 在PageLoad事件中添加如下代码:(webform1.aspx..cs文件)
Xml1.DocumentSource = "SampleData.XML";
Xml1.TransformSource = "SampleTransform.XSL
3.e 运行web页面,你将看到转换在服务器端被ASP.NET执行,并输出了一个web页面。
对XSLT测试和计时
1. MSXSL.EXE:微软提供了一个简单的XSLT工具(MSXSL.exe),你可以在
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=2fb55371-c94e-4373-b0e9-db4816552e41 中自由下载。这个工具使用-t选项进行转换计时。
示例代码:msxsl.exe SampleXML.xml SampleXSL.xsl -o Output1.html –t
以上命令对SampleXML.xml文件进行转换(需要通过使用SampleXSL.xsl)并在Output1.html中输出。以上命令也进行了计时(-t option)
2. Internet Explorer(>=5.x):你可以使用IE(Version>5.x)通过在XML文档中引用XSLT来进行转换。用它来测试XSL文件非常棒。
参考资料
到这个网页下方的References这一节自己去看吧,懒得转换了
http://www.asp101.com/articles/jayram/xslt/default.asp