System.Xml.Xsl.XslCompiledTransform 类

本文提供了此 API 参考文档的补充说明。

XslCompiledTransform 类是支持 XSLT 1.0 语法的 XSLT 处理器。 它是一个新的实现,与过时的 XslTransform 类相比有性能提升。 XslCompiledTransform 类的结构与 XslTransform 类非常相似。 Load 方法加载并编译样式表,而 Transform 方法则执行 XSLT 转换。

默认禁用对 XSLT document() 函数和嵌入脚本块的支持。 通过创建 XsltSettings 对象并将其传递给 Load 方法,可以启用这些功能。

有关详细信息,请参阅使用 XslCompiledTransform 类从 XslTransform 类迁移

安全注意事项

在创建使用 XslCompiledTransform 类的应用程序时,应了解下列项及其含义:

  • 默认情况下禁用 XSLT 脚本。 只有要求脚本支持并且处于完全可信的环境下时,才应启用 XSLT 脚本。

  • 默认情况下禁用 XSLT document() 函数。 如果启用 document() 函数,通过将 XmlSecureResolver 对象传递给 Transform 方法,限制可以访问的资源。

  • 默认情况下启用扩展对象。 如果包含扩展对象的 XsltArgumentList 对象传递给 Transform 方法,将利用这些扩展对象。

  • XSLT 样式表可以包括对其他文件的引用以及嵌入式脚本块。 恶意用户可能会利用这一点,方法是为您提供数据或样式表,在执行时,可能会使您的系统不断进行处理,直到计算机资源不足。

  • 在混合信任环境下运行的 XSLT 应用程序可能会引发样式表欺骗。 例如,恶意用户可能会为对象加载有害的样式表,并将其交给另一个用户,而后者会继续调用 Transform 方法并执行转换。

如果不启用脚本或 document() 函数(除非样式表来自可信的源),或不接受来自不可信的源的 XslCompiledTransform 对象、XSLT 样式表或 XML 源数据,可以缓解这些安全问题。