VB 2010 (42)XslCompiledTransform 类

   Xsl名称空间最主要的类是XsICompiledTransform类,该类使用XSLT 文件转换XML文档。

XslCompiledTransform 类

https://docs.microsoft.com/zh-cn/dotnet/api/system.xml.xsl.xslcompiledtransform?view=netframework-4.8

注解

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 源数据,可以缓解这些安全问题。

构造函数

表 1
XslCompiledTransform()

初始化 XslCompiledTransform 类的新实例。

XslCompiledTransform(Boolean)

使用指定的调试设置初始化 XslCompiledTransform 类的新实例。

属性

表 2
OutputSettings

获取一个 XmlWriterSettings 对象,该对象包含从样式表的 xsl:output 元素派生的输出信息。

TemporaryFiles

获取包含临时文件的 TempFileCollection,这些临时文件是在成功调用 Load 方法后在磁盘上生成的。

方法

表 3
Load(IXPathNavigable)

编译 IXPathNavigable 对象中包含的样式表。

Load(IXPathNavigable, XsltSettings, XmlResolver)

编译 IXPathNavigable 中包含的 XSLT 样式表。 XmlResolver 可以解析任何 XSLT import 或 include 元素,而 XSLT 设置决定了样式表的权限。

Load(MethodInfo, Byte[], Type[])

从使用 XSLTC.exe 实用程序编译的样式表中加载一个方法。

Load(String)

加载和编译位于指定 URI 的样式表。

Load(String, XsltSettings, XmlResolver)

加载和编译 URI 指定的 XSLT 样式表。 XmlResolver 可以解析任何 XSLT import 或 include 元素,而 XSLT 设置决定了样式表的权限。

Load(Type)

加载使用 XSLT 编译器 (xsltc.exe) 创建的已编译样式表。

Load(XmlReader)

编译 XmlReader 中包含的样式表。

Load(XmlReader, XsltSettings, XmlResolver)

编译 XmlReader 中包含的 XSLT 样式表。 XmlResolver 可以解析任何 XSLT import 或 include 元素,而 XSLT 设置决定了样式表的权限。

Transform(IXPathNavigable, XmlWriter)

使用 IXPathNavigable 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter

Transform(IXPathNavigable, XsltArgumentList, Stream)

使用 IXPathNavigable 对象指定的输入文档执行转换,然后将结果输出到流。 XsltArgumentList 提供附加的运行时参数。

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

使用 IXPathNavigable 对象指定的输入文档执行转换,然后将结果输出到 TextWriter。 XsltArgumentList 提供附加的运行时参数。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

使用 IXPathNavigable 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter。 XsltArgumentList 提供附加的运行时参数。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

使用 IXPathNavigable 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter。 XsltArgumentList 提供附加的运行时参数,而 XmlResolver 解析 XSLT document() 函数。

Transform(String, String)

使用 URI 指定的输入文档执行转换,然后将结果输出到文件。

Transform(String, XmlWriter)

使用 URI 指定的输入文档执行转换,然后将结果输出到 XmlWriter

Transform(String, XsltArgumentList, Stream)

使用 URI 指定的输入文档执行转换,然后将结果输出到流。 XsltArgumentList 提供附加的运行时参数。

Transform(String, XsltArgumentList, TextWriter)

使用 URI 指定的输入文档执行转换,然后将结果输出到 TextWriter

Transform(String, XsltArgumentList, XmlWriter)

使用 URI 指定的输入文档执行转换,然后将结果输出到 XmlWriter。 XsltArgumentList 提供附加的运行时参数。

Transform(XmlReader, XmlWriter)

使用 XmlReader 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter

Transform(XmlReader, XsltArgumentList, Stream)

使用 XmlReader 对象指定的输入文档执行转换,然后将结果输出到流。 XsltArgumentList 提供附加的运行时参数。

Transform(XmlReader, XsltArgumentList, TextWriter)

使用 XmlReader 对象指定的输入文档执行转换,然后将结果输出到 TextWriter。 XsltArgumentList 提供附加的运行时参数。

Transform(XmlReader, XsltArgumentList, XmlWriter)

使用 XmlReader 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter。 XsltArgumentList 提供附加的运行时参数。

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

使用 XmlReader 对象指定的输入文档执行转换,然后将结果输出到 XmlWriter。 XsltArgumentList 提供附加的运行时参数,而 XmlResolver 解析 XSLT document() 函数。

XsICompiledTransform类含有下列方法和属性:

  • XmIResolver  这个get/set属性用于指定一个处理外部引用(在样式表中包含和导入元素)的类(抽象基类XmlResolver)。在转换文档(执行Transform方法)时会遇到这些外部引用。System Xml名称空间还包含了一个XmlResolver的派生类XmlUrIResolver。XmlUrIResolver类解析基于统一资源标识符(URD的外部资源。
  • Load  该重载方法加载一个用于转换XML文档的XSLT样式表。这个方法可以使用下面的参数类型来指定XSLT样式表:XPathNavigator、XSLT文件的文件名(指定参数类型为String)、XmIReader或IXpathNavigable。对于支持的每—种XSLT类型,都存在一个允许指定XmlResolver的重载版本。例如可以调用Load(String,XsltSettings,XmIResolver)方法。这里,String对应于一个文件名,XsltSettings是一个包含影响转换的设置的对象,而XmIResolver是一个处理样式表中引用类型xsl:import和xsl:include的对象。也可以把Nothing值传递给Load方法的第二个参数(没有指定XmlResolver)。
  • Transform  该重载方法使用前面指定的XSLT样式表来转换指定的XML文档。XML转换输出的位置被指定为该方法的一个参数。每个重载方法的第一个参数都是要转换的XML文档,Transform方法最简单的形式是Transform(String,String)。这里,第一个参数是含有XML文档的文件,第二个参数是接收转换的XML文档的文件名。

    Transform方法的第一个参数也可以指定为IXPathNavigable或XmIReader.这两种参数类型都允许将XML输出发送给Stream、TextWriter或XmIWriter类型的对象。在指定这两种输入时,可以使用一个包含XsltArgumentList对象的参数。XsltArgumentList对象包含一个参数列表,用作转换的输入。这些都可以用在XSLT文件中,以影响输出。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值