解析外部 XSLT 样式表和文档

更新:November 2007

转换过程中会有几个场合需要解析外部资源。

说明:

XslTransform 类在 .NET Framework 2.0 版 中已过期。 可以使用 XslCompiledTransform 类执行可扩展样式表语言转换 (XSLT) 转换。 有关更多信息,请参见使用 XslCompiledTransform 类从 XslTransform 类迁移

转换过程中会有几个场合需要解析外部资源:

  • Load 期间定位外部样式表时。

  • Load 期间解析样式表中的任何 <xsl:include> 或 <xsl:import> 元素时。

  • Transform 期间解析任何 document() 函数时。

使用 XmlResolver 类

如果访问网络资源需要身份验证,则使用有 XmlResolver 参数的 Load 方法,以便传递包含必要的凭据属性集的 XmlResolver 对象。

如果要使用一个自定义 XmlResolver,或者如果需要指定其他凭据,下表根据需要解析外部资源的不同情况列出了需要执行的任务。

需要解析的过程

所需任务

Load 期间定位样式表时。

如果样式表在要求凭据的资源上,则指定接受 XmlResolver 参数的重载 Load 方法。

Load 期间解析 <xsl:include> 或 <xsl:import> 时。

指定接受 XmlResolver 参数的重载 Load 方法。 XmlResolver 用来加载由 import 或 include 语句引用的样式表。 如果您传入 null,则不解析外部资源。

在转换期间解析任何 document() 函数时。

在转换期间使用接受 XmlResolver 参数的 Transform 方法指定 XmlResolver

除了由输入流提供的初始 XML 数据外, document() 函数还从样式表中检索其他 XML 资源。 因为此函数允许包括可能位于其他位置的 XML 数据,所以,向 Transform 方法提供一个具有 null 值的 XmlResolver 将使 document() 函数无法执行。 若要使用 document() 函数,除具有适当的权限集外,还应使用接受 XmlResolver 参数的 Transform 方法。

有关 Load 方法及其 XmlResolver 的使用的更多信息,请参见 XslTransform.Load(String, XmlResolver)。 有关 XmlResolver 类的更多信息,请参见使用 XmlResolver 解析资源XmlResolver 类

调用 Transform 方法时,将针对在加载时提供的证据来计算权限,并将权限集分配给整个转换过程。 如果 document() 函数尝试启动一个操作而该操作需要权限集中没有的权限,就会引发异常。

请参见

概念

XslTransform 类的 XSLT 转换

XslTransform 类实现 XSLT 处理器

XslTransform 的输出

不同存储区的 XSLT 转换

样式表参数和扩展对象的 XsltArgumentList

使用 <msxsl:script> 编写 XSLT 样式表脚本

对 msxsl:node-set() 函数的支持

转换中的 XPathNavigator

转换中的 XPathNodeIterator

XslTransform 的 XPathDocument 输入

XslTransform 的 XmlDataDocument 输入

XslTransform 的 XmlDocument 输入