msxsl:script标记在xslt中的应用

简介:

xslt被应用在对xml文件的解析中,在asp.net编程中,使用xml控件可以指定DocumentSource属性以加载xml文件,指定TransformSource属性以加载xslt文件,xml控件会自动将转换后的结果显示在页面上。xslt本身也支持很多xpath函数,以及一些简单的逻辑语句,如if,choose-when-otherwise,for-each等,另外在xslt中也可以自定义方法(在xslt中称之为模板)被其它的代码重复调用,有关xslt的详细介绍可以参考W3school的XSLT教程

  自从微软的MOSS出现以来,xslt的应用越来越广泛,有时候我们也会碰到xslt与javascript以及一些服务器端语言之间的交互问题,如我们需要根据javascript代码中某一变量的值来决定是否在页面上输出内容,这个时候就需要在xslt中使用msxsl:script标记了。

  msxsl:script标记由Microsoft支持,它本身可以支持几种不同的语言,如C#,VB.NET,JScript等,具体的使用方法和介绍可以参考下msdn,http://msdn.microsoft.com/en-us/library/533texsx(VS.71).aspx。另外,这里还有一篇文章也详细介绍了如何在xslt中使用msxsl:script标记,http://blog.joycode.com/saucer/archive/2004/05/12/21273.joy

  基本上,我们在xslt中可以直接使用msxsl:script标记中定义好的公共方法和类型,如果是服务器端语言,必须确保方法或类型是public的,而且参数或返回值的类型在传递和接收时必须相同(有些参数类型在xslt中是不被支持的,大多数情况下我们可能会使用到nodelist类型)。当然,在使用服务器端语言时,程序集和名称空间的引用也是必要的,这里有一个例子:

复制代码
< msxsl:script  language ="C#"  implements-prefix ="user" >
  
< msxsl:using  namespace ="System.Web"   />
  
< msxsl:assembly  name ="System.Web"   />
  public bool matchCurrUrl(string loc)
  {
    return HttpContext.Current.Request.Url.ToString().ToLower().IndexOf(loc.ToLower()) != -1;
  }
</ msxsl:script >
复制代码

  msxsl:using标记和msxsl:assembly标记分别用来引用名称空间和程序集,理论上它们是可以被写在xslt文件的任何位置的。msxsl:script标记被标识为C#语言,而且matchCurrUrl方法中使用了HttpContext全局对象,该对象隶属于System.Web名称空间,因此在使用前必须添加程序集引用和名称空间。不要指望xslt会自动为你加载程序集和名称空间引用,因为msxsl:script标记并非w3c标准,你在使用它之前也要进行申明,如下面两行: 

xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts"

   如果在msxsl:script标记中使用的是客户端语言,如javascript,则要注意避免使用客户端浏览器对象,如window、document等,因为xslt本身是在服务器端解析的,服务器并不知道客户端的行为,我们在msxsl:script标记中编写的javascript代码应该会被映射成服务器端方法才能被正确解析。如果你想在交互过程中得到客户端访问的页面地址,最好的方法莫过于在C#中使用HttpContext.Current.Request.Url,而不要在javascript中使用document.location或window.location。

   使用msxsl:script标记可以省去开发过程中的很多麻烦,按照传统的开发习惯,如果我们想在xslt中插入C#代码,则一般的做法是将代码写在用户控件中,然后在xslt中输出用户控件的引用标记。如果直接使用msxsl:script标记,你可以将所有的C#代码写在里面,省去了编写用户控件的麻烦!


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2010/06/29/1767688.html,如需转载请自行联系原作者

相关文章
|
6月前
|
数据安全/隐私保护
7.常用的HTML标记
7.常用的HTML标记
47 0
N..
|
6月前
HTML常用标记
HTML常用标记
N..
56 1
|
6月前
编程笔记 html5&css&js 007 HTML文本:段落和格式
编程笔记 html5&css&js 007 HTML文本:段落和格式
|
移动开发 HTML5
HTML5中MathML标签的含义之多少
HTML5中MathML标签的含义之多少
98 0
|
缓存 JavaScript 前端开发
HTML中的JavaScript中script元素废弃的语法
在HTML中,可以通过行内代码和外部文件两种方式来使用JavaScript代码。本文将介绍两种方式的使用方法、优缺点及注意事项。
|
前端开发 JavaScript UED
HTML中的JavaScript中script元素动态加载脚本
在HTML中,<script>元素可以通过动态创建和添加来实现动态加载脚本。动态加载脚本可以优化页面性能和提高用户体验,但需要注意脚本的执行顺序和依赖关系。
|
JavaScript 前端开发
HTML中的JavaScript中script元素 动态加载脚本
本文介绍了HTML中JavaScript的动态加载脚本的概念、优势和实现方式,并结合实例讲解了如何通过动态加载脚本实现更加灵活的控制和优化。
|
缓存 移动开发 JavaScript
如何将 JavaScript 代码添加到网页中,以及 <script> 标签的属性
如何将 JavaScript 代码添加到网页中,以及 <script> 标签的属性
352 0
如何将 JavaScript 代码添加到网页中,以及 <script> 标签的属性
Html之标记
Html之标记
98 0
HTML 标签简写及全称
下表列出了 HTML 标签简写及全称:
110 0
HTML 标签简写及全称