如何在XSLT里调用C#的代码
有两种方法:1)内嵌脚本, 2)使用扩展对象
使用内嵌脚本的方法,MSDN上已经有比较清楚的描述: Script Blocks Using msxsl:script。但对扩展对象的描述好像并不清晰。其实扩展对象比内嵌更为强大。举个例子,假设我们想知道自己所关心城市的天气,我们用一个xml来描述:
在这里我们想知道上海和北京两地的天气,并希望通过一个XSLT来转换出如下结果:
<Report>
天气预报是通过调用一个web服务得到的。可以想象,单纯的XSLT绝对没办法把这事简单搞定。不过通过扩展对象,这件事情就变得异常简单了。
首先我们创建一个扩展对象:
这个对象支持一个方法:根据城市名称返回其天气。为简单起见,我们返回"weather of"加城市名字。在具体的应用中可以去调用具体的web服务。
下面这段代码实现将结果输出到屏幕上:
大部分代码和其他的都相同,不同的地方就是,需要将扩展对象作为参数传到你的XSLT里:
xsltArgList.AddExtensionObject("urn:my.xslt.extension", new WeatherReport());
下面是XSLT文本:
其他都一样,不同的是,我们需要定义扩展对象的命名空间
xmlns:code ="urn:my.xslt.extension"
这个就是我们在代码AddExtensionObject传进去的命名空间
另外就是调用:
<xsl:value-ofselect ="code:GetReport(.)"/>
其实扩展对象的威力远远不止这些,你还可以接受一个XPathNodeIterator来处理节点树,甚至返回一个新的XPathNodeIterator让XLST做处理。
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/archive/2012/07/18/2597672.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
posted on 2012-07-18 16:34 jack_Meng 阅读(1158) 评论(0) 编辑 收藏 举报