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()函数,除非样式表来自受信任的源,并且不接受来自不受信任的源的对象、XSLT 样式表或 XML 源数据,可以缓解这些安全问题。