<msxsl:script> 元素
包含脚本块,所以自定义函数可以在 XSLT 转换中使用。 此元素是顶级元素。
<msxsl:script
language = "language-name"
implements-prefix = "prefix of user's namespace">
</msxsl:script>
特性
language
用于此元素中定义的函数的活动脚本语言。 如果未指定,将使用 Microsoft® JScript®(与 ECMA 262 语言规范兼容)。 此属性接受与 HTML<SCRIPT>
元素上的language
属性相同的值。对于托管代码,此属性接受 CreateProvider 所接受的语言名称。
- implements-prefix
必选。 将前缀与脚本块关联。 此特性的值是表示命名空间的前缀。
元素信息
出现次数 |
无限制 |
父元素 |
|
子元素 |
|
备注
<msxsl:script>
元素属于 urn:schemas-microsoft-com:xslt
命名空间。 可以在此元素中声明变量和定义函数。 此元素可能出现在 <xsl:stylesheet>
元素内。 这样嵌套的脚本块将作为全局脚本块对待。
<msxsl:assembly>
和 <msxsl:using>
子元素仅对 .NET Framework 内的托管代码可用。 在使用时,这两个元素必须位于脚本块的开头,位于任何脚本代码的前面。
在非托管代码中,您还可以实例化 <msxsl:script>
元素中的 COM 对象。 但是,用户的安全设置可能会使您的脚本无法实例化客户端对象。
为了获得高性能,避免使用 XSLT 文件中的脚本块,因为这些脚本块要求多次加载脚本引擎。 而应创建与脚本等效的 COM 对象,用于生成 DLL。 然后使用 addObject
并传递该 DLL。
示例
此示例演示如何使用 <msxsl:script>
来定义具有 user
命名空间前缀的脚本块,以便声明一个叫做 xml()
的函数。 xml()
函数采用节点列表作为参数。 请注意 user
命名空间中的这个 xml(nodelist)
函数是如何从 <xsl:value-of>
的 select
属性调用的。
XML 文件 (customers.xml)
XSLT 文件 (script.xsl)
输出
以下是格式化输出:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="script.xsl" ?>
<customers>
<customer>
<name>John Smith</name>
<address>123 Elm St.</address>
<phone>(123) 456-7890</phone>
</customer>
<customer>
<name>Mary Jones</name>
<address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer>
</customers>
以下是处理器输出:
<?xml version="1.0"?><?xml version="1.0"?><?xml-stylesheet
type="text/xsl" href="script.xsl" ?><customers>
<customer> <name>John Smith</name>
<address>123 Elm St.</address> <phone>(123) 456-
7890</phone> </customer> <customer> <name>Mary
Jones</name> <address>456 Oak Ave.</address>
<phone>(156) 789-0123</phone>
</customer></customers>