XslCompiledTransform.Transform 方法

定义

执行 XSLT 转换。

重载

Transform(XmlReader, XsltArgumentList, TextWriter)

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

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

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

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

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

Transform(IXPathNavigable, XsltArgumentList, Stream)

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

Transform(XmlReader, XsltArgumentList, XmlWriter)

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

Transform(XmlReader, XsltArgumentList, Stream)

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

Transform(String, String)

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

Transform(String, XsltArgumentList, TextWriter)

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

Transform(String, XsltArgumentList, Stream)

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

Transform(IXPathNavigable, XmlWriter)

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

Transform(XmlReader, XmlWriter)

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

Transform(String, XmlWriter)

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

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

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

Transform(String, XsltArgumentList, XmlWriter)

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

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

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

注解

备注

以调试模式编译的 XSLT 与以发布模式编译的 XSLT 之间有一些差别。 在有些情况下,以调试模式编译的样式表在 Load 期间不会引发错误,但以后在 Transform 期间会失败。 以发布模式编译的同一个样式表在 Load 期间就会失败。 例如,当某个表达式需要节点集,而分配给该表达式的变量不是节点集类型的时,就会出现这种情况。

Transform(XmlReader, XsltArgumentList, TextWriter)

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

public:
 void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As TextWriter)

参数

input
XmlReader

包含输入文档的 XmlReader

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
TextWriter

要输出到的 TextWriter

例外

inputresults 值为 null

执行 XSLT 转换时出错。

注解

如果样式表包含 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析该函数。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

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

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As XmlWriter)

参数

input
IXPathNavigable

一个实现 IXPathNavigable 接口的对象。 在 Microsoft .NET Framework 中,这可以是 XmlNode(一般为 XmlDocument),或者是包含要转换的数据的 XPathDocument

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

注解

如果启用了 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析它。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

此方法不支持 xsl:strip-space 该元素。 如果编译的样式表包含 xsl:strip-space 元素,则必须使用 Transform 采用输入 XmlReader 参数的重载。

IXPathNavigable 接口在 XmlNodeXPathDocument 类中实现。 这两个类表示 XML 数据的内存中缓存。

  • XmlNode 类基于 W3C 文档对象模型 (DOM) 并具有编辑功能。

  • XPathDocument 类是基于 XPath 数据模型的只读数据存储。 XPathDocument 是 XSLT 处理建议使用的类。 与 XmlNode 类相比,此类的性能更强。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须创建一个仅包含节点片段的对象,并将该对象传递给 Transform 方法。 有关详细信息,请参阅如何:转换节点片段

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

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

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As TextWriter)

参数

input
IXPathNavigable

一个实现 IXPathNavigable 接口的对象。 在 Microsoft .NET Framework 中,这可以是 XmlNode(一般为 XmlDocument),或者是包含要转换的数据的 XPathDocument

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
TextWriter

要输出到的 TextWriter

例外

inputresults 值为 null

执行 XSLT 转换时出错。

注解

如果启用了 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析它。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

此方法不支持 xsl:strip-space 该元素。 如果编译的样式表包含 xsl:strip-space 元素,则必须使用 Transform 采用输入 XmlReader 参数的重载。

IXPathNavigable 接口在 XmlNodeXPathDocument 类中实现。 这两个类表示 XML 数据的内存中缓存。

  • XmlNode 类基于 W3C 文档对象模型 (DOM) 并具有编辑功能。

  • XPathDocument 类是基于 XPath 数据模型的只读数据存储。 XPathDocument 是 XSLT 处理建议使用的类。 与 XmlNode 类相比,此类的性能更强。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须创建一个仅包含节点片段的对象,并将该对象传递给 Transform 方法。 有关详细信息,请参阅如何:转换节点片段

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, Stream)

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

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As Stream)

参数

input
IXPathNavigable

一个实现 IXPathNavigable 接口的对象。 在 Microsoft .NET Framework 中,这可以是 XmlNode(一般为 XmlDocument),或者是包含要转换的数据的 XPathDocument

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
Stream

要输出到的流。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

示例

以下示例执行 XSLT 转换并输出到 a FileStream.

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Create the FileStream.
using (FileStream fs = new FileStream(@"c:\data\output.xml", FileMode.Create))
{
   // Execute the transformation.
   xslt.Transform(new XPathDocument("books.xml"), null, fs);
}
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Create the FileStream.
Using fs As New FileStream("c:\data\output.xml", FileMode.Create)
   ' Execute the transformation.
    xslt.Transform(New XPathDocument("books.xml"), Nothing, fs)
End Using

注解

如果启用了 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析它。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

此方法不支持 xsl:strip-space 该元素。 如果编译的样式表包含 xsl:strip-space 元素,则必须使用 Transform 采用输入 XmlReader 参数的重载。

IXPathNavigable 接口在 XmlNodeXPathDocument 类中实现。 这两个类表示 XML 数据的内存中缓存。

  • XmlNode 类基于 W3C 文档对象模型 (DOM) 并具有编辑功能。

  • XPathDocument 类是基于 XPath 数据模型的只读数据存储。 XPathDocument 是 XSLT 处理建议使用的类。 与 XmlNode 类相比,此类的性能更强。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须创建一个仅包含节点片段的对象,并将该对象传递给 Transform 方法。 有关详细信息,请参阅如何:转换节点片段

另请参阅

适用于

Transform(XmlReader, XsltArgumentList, XmlWriter)

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

public:
 void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As XmlWriter)

参数

input
XmlReader

包含输入文档的 XmlReader

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

注解

如果样式表包含 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析该函数。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

另请参阅

适用于

Transform(XmlReader, XsltArgumentList, Stream)

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

public:
 void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As Stream)

参数

input
XmlReader

包含输入文档的 XmlReader

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
Stream

要输出到的流。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

注解

如果样式表包含 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析该函数。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

另请参阅

适用于

Transform(String, String)

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

public:
 void Transform(System::String ^ inputUri, System::String ^ resultsFile);
public void Transform (string inputUri, string resultsFile);
member this.Transform : string * string -> unit
Public Sub Transform (inputUri As String, resultsFile As String)

参数

inputUri
String

输入文档的 URI。

resultsFile
String

输出文件的 URI。

例外

inputUriresultsFile 值为 null

执行 XSLT 转换时出错。

无法找到输入文档。

inputUriresultsFile 值包含无法找到的文件名或目录。

无法解析 inputUriresultsFile 值。

  • 或 - 处理该请求时出错。

inputUriresultsFile 不是有效 URI。

加载输入文档时出现分析错误。

示例

以下示例执行到文件的转换和输出。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")

此示例使用以下两个输入文件:

books.xml

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

output.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
  <HTML>
    <BODY>
      <TABLE BORDER="2">
        <TR>
          <TD>ISBN</TD>
          <TD>Title</TD>
          <TD>Price</TD>
        </TR>
        <xsl:apply-templates select="book"/>
      </TABLE>
    </BODY>
  </HTML>
</xsl:template>
<xsl:template match="book">
  <TR>
    <TD><xsl:value-of select="@ISBN"/></TD>
    <TD><xsl:value-of select="title"/></TD>
    <TD><xsl:value-of select="price"/></TD>
  </TR>
</xsl:template>
</xsl:stylesheet>

注解

此方法使用没有用户凭据的默认值 XmlUrlResolver 来解析输入和输出文档。 如果其中任一资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

XmlReader使用默认设置加载输入文档。 DTD 处理在 .XmlReader 如果需要 DTD 处理,请创建启用了此功能的一个 XmlReader ,并将其传递给 Transform 该方法。

另请参阅

适用于

Transform(String, XsltArgumentList, TextWriter)

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

public:
 void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As TextWriter)

参数

inputUri
String

输入文档的 URI。

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
TextWriter

要输出到的 TextWriter

例外

inputUriresults 值为 null

执行 XSLT 转换时出错。

inputUri 值包含无法找到的文件名或目录。

无法解析 inputUri 值。

  • 或 - 处理该请求时出错。

inputUri 不是有效的 URI。

加载输入文档时出现分析错误。

示例

以下示例执行 XSLT 转换并输出字符串。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("HTML_out.xsl");

// Transform the file and output an HTML string.
string HTMLoutput;
StringWriter writer = new StringWriter();
xslt.Transform("books.xml", null, writer);
HTMLoutput = writer.ToString();
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("HTML_out.xsl")
        
' Transform the file and output an HTML string.
Dim HTMLoutput As String
Dim writer As New StringWriter()
xslt.Transform("books.xml", Nothing, writer)
HTMLoutput = writer.ToString()
writer.Close()

注解

此方法使用没有用户凭据的默认值 XmlUrlResolver 解析在样式表中找到的 XSLT document() 函数的输入文档和任何实例。 如果其中任一资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

XmlReader使用默认设置加载输入文档。 DTD 处理在 .XmlReader 如果需要 DTD 处理,请创建启用了此功能的一个 XmlReader ,并将其传递给 Transform 该方法。

另请参阅

适用于

Transform(String, XsltArgumentList, Stream)

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

public:
 void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As Stream)

参数

inputUri
String

输入文档的 URI。

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
Stream

要输出到的流。

例外

inputUriresults 值为 null

执行 XSLT 转换时出错。

inputUri 值包含无法找到的文件名或目录。

无法解析 inputUri 值。

  • 或 - 处理该请求时出错。

inputUri 不是有效的 URI。

加载输入文档时出现分析错误。

注解

此方法使用没有用户凭据的默认值 XmlUrlResolver 解析在样式表中找到的 XSLT document() 函数的输入文档和任何实例。 如果其中任一资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

XmlReader使用默认设置加载输入文档。 DTD 处理在 .XmlReader 如果需要 DTD 处理,请创建启用了此功能的一个 XmlReader ,并将其传递给 Transform 该方法。

另请参阅

适用于

Transform(IXPathNavigable, XmlWriter)

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

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.XmlWriter -> unit
Public Sub Transform (input As IXPathNavigable, results As XmlWriter)

参数

input
IXPathNavigable

一个实现 IXPathNavigable 接口的对象。 在 Microsoft .NET Framework 中,这可以是 XmlNode(一般为 XmlDocument),或者是包含要转换的数据的 XPathDocument

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

示例

以下示例执行 XSLT 转换并输出到 XmlWriter 对象。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);

// Execute the transformation.
xslt.Transform(new XPathDocument("books.xml"), writer);
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
        
' Execute the transformation.
xslt.Transform(New XPathDocument("books.xml"), writer)
writer.Close()

注解

如果启用了 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析它。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

此方法不支持 xsl:strip-space 该元素。 如果编译的样式表包含 xsl:strip-space 元素,则必须使用 Transform 采用输入 XmlReader 参数的重载。

IXPathNavigable 接口在 XmlNodeXPathDocument 类中实现。 这两个类表示 XML 数据的内存中缓存。

  • XmlNode 类基于 W3C 文档对象模型 (DOM) 并具有编辑功能。

  • XPathDocument 类是基于 XPath 数据模型的只读数据存储。 XPathDocument 是 XSLT 处理建议使用的类。 与 XmlNode 类相比,此类的性能更强。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须创建一个仅包含节点片段的对象,并将该对象传递给 Transform 方法。 有关详细信息,请参阅如何:转换节点片段

另请参阅

适用于

Transform(XmlReader, XmlWriter)

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

public:
 void Transform(System::Xml::XmlReader ^ input, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.XmlWriter -> unit
Public Sub Transform (input As XmlReader, results As XmlWriter)

参数

input
XmlReader

包含输入文档的 XmlReader

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

示例

以下示例转换books.xml文件中的第一本书。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);

XmlReader reader = XmlReader.Create("books.xml");
reader.MoveToContent();

// Execute the transformation.
xslt.Transform(reader, writer);
writer.Close();
reader.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
        
Dim reader As XmlReader = XmlReader.Create("books.xml")
reader.MoveToContent()
        
' Execute the transformation.
xslt.Transform(reader, writer)
writer.Close()
reader.Close()

注解

如果启用了 XSLT document() 函数,则会使用 XmlUrlResolver 无用户凭据解析它。 如果外部资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

另请参阅

适用于

Transform(String, XmlWriter)

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

public:
 void Transform(System::String ^ inputUri, System::Xml::XmlWriter ^ results);
public void Transform (string inputUri, System.Xml.XmlWriter results);
member this.Transform : string * System.Xml.XmlWriter -> unit
Public Sub Transform (inputUri As String, results As XmlWriter)

参数

inputUri
String

输入文档的 URI。

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputUriresults 值为 null

执行 XSLT 转换时出错。

inputUri 值包含无法找到的文件名或目录。

无法解析 inputUri 值。

  • 或 - 处理该请求时出错。

inputUri 不是有效的 URI。

加载输入文档时出现分析错误。

示例

以下示例执行 XSLT 转换并输出到 XmlWriter 对象。

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");

// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);

// Execute the transformation.
xslt.Transform("books.xml", writer);
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
        
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
        
' Execute the transformation.
xslt.Transform("books.xml", writer)
writer.Close()

注解

此方法使用没有用户凭据的默认值 XmlUrlResolver 解析在样式表中找到的 XSLT document() 函数的输入文档和任何实例。 如果其中任一资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

XmlReader使用默认设置加载输入文档。 DTD 处理在 .XmlReader 如果需要 DTD 处理,请创建启用了此功能的一个 XmlReader ,并将其传递给 Transform 该方法。

此方法不支持 xsl:strip-space 该元素。 如果编译的样式表包含 xsl:strip-space 元素,则必须使用 Transform 采用输入 XmlReader 参数的重载。

另请参阅

适用于

Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)

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

public:
 void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results, System::Xml::XmlResolver ^ documentResolver);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver? documentResolver);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver documentResolver);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As XmlWriter, documentResolver As XmlResolver)

参数

input
XmlReader

包含输入文档的 XmlReader

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

documentResolver
XmlResolver

用于解析 XSLT document() 函数的 XmlResolver。 如果为 null,则不解析 document() 函数。

例外

inputresults 值为 null

执行 XSLT 转换时出错。

示例

以下示例使用一个 XmlSecureResolver 解析 XSLT document() 函数。

// Create a resolver and specify the necessary credentials.
XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), "http://serverName/data/");
System.Net.NetworkCredential myCred;
myCred  = new System.Net.NetworkCredential(UserName,SecurelyStoredPassword,Domain);
resolver.Credentials = myCred;

XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;

// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/sort.xsl", settings, resolver);

// Transform the file.
using (XmlReader reader = XmlReader.Create("books.xml"))
{
   using (XmlWriter writer = XmlWriter.Create("output.xml"))
   {
      xslt.Transform(reader, null, writer, resolver);
   }
}
' Create a resolver and specify the necessary credentials.
Dim resolver As New XmlSecureResolver(New XmlUrlResolver(), "http://serverName/data/")
Dim myCred As System.Net.NetworkCredential
myCred = New System.Net.NetworkCredential(UserName, SecurelyStoredPassword, Domain)
resolver.Credentials = myCred
        
Dim settings As New XsltSettings()
settings.EnableDocumentFunction = True
        
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/sort.xsl", settings, resolver)
        
' Transform the file.
        Using reader As XmlReader = XmlReader.Create("books.xml")

            Using writer As XmlWriter = XmlWriter.Create("output.xml")
                xslt.Transform(reader, Nothing, writer, resolver)
            End Using

        End Using

另请参阅

适用于

Transform(String, XsltArgumentList, XmlWriter)

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

public:
 void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As XmlWriter)

参数

inputUri
String

输入文档的 URI。

arguments
XsltArgumentList

XsltArgumentList,包含用作转换输入的命名空间限定的参数。 此值可为 null

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

例外

inputUriresults 值为 null

执行 XSLT 转换时出错。

inputtUri 值包含无法找到的文件名或目录。

无法解析 inputUri 值。

  • 或 - 处理该请求时出错。

inputUri 不是有效的 URI。

加载输入文档时出现分析错误。

示例

以下示例使用对象 XsltArgumentList 创建表示当前日期和时间的参数。

using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;

public class Sample
{

    public static void Main()
    {

        // Create the XslCompiledTransform and load the stylesheet.
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load("order.xsl");

        // Create the XsltArgumentList.
        XsltArgumentList xslArg = new XsltArgumentList();

        // Create a parameter which represents the current date and time.
        DateTime d = DateTime.Now;
        xslArg.AddParam("date", "", d.ToString());

        // Transform the file.
        using (XmlWriter w = XmlWriter.Create("output.xml"))
        {
            xslt.Transform("order.xml", xslArg, w);
        }
    }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl

Public Class Sample

    Public Shared Sub Main()

        ' Create the XslCompiledTransform and load the stylesheet.
        Dim xslt As New XslCompiledTransform()
        xslt.Load("order.xsl")

        ' Create the XsltArgumentList.
        Dim xslArg As New XsltArgumentList()

        ' Create a parameter which represents the current date and time.
        Dim d As DateTime = DateTime.Now
        xslArg.AddParam("date", "", d.ToString())

        Using w As XmlWriter = XmlWriter.Create("output.xml")
            ' Transform the file.
            xslt.Transform("order.xml", xslArg, w)
        End Using

    End Sub
End Class

本示例使用以下两个数据文件作为输入。

order.xml

<!--Represents a customer order-->
<order>
  <book ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <cd ISBN='2-3631-4'>
    <title>Americana</title>
    <price>16.95</price>
  </cd>
</order>

order.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="date"/>
  <xsl:template match="/">
    <order>
      <date><xsl:value-of select="$date"/></date>
      <total><xsl:value-of select="sum(//price)"/></total>
    </order>
  </xsl:template>
</xsl:stylesheet>

注解

此方法使用没有用户凭据的默认值 XmlUrlResolver 解析在样式表中找到的 XSLT document() 函数的输入文档和任何实例。 如果其中任一资源位于需要身份验证的网络资源上,请使用采用 XmlResolver 其参数之一的重载并指定 XmlResolver 具有所需凭据的重载。

XmlReader使用默认设置加载输入文档。 DTD 处理在 .XmlReader 如果需要 DTD 处理,请创建启用了此功能的一个 XmlReader ,并将其传递给 Transform 该方法。

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

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

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results, System::Xml::XmlResolver ^ documentResolver);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver? documentResolver);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver documentResolver);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As XmlWriter, documentResolver As XmlResolver)

参数

input
IXPathNavigable

IXPathNavigable 对象指定的要转换的文档。

arguments
XsltArgumentList

XsltArgumentList 形式的参数列表。

results
XmlWriter

要输出到的 XmlWriter

如果样式表包含 xsl:output 元素,则应使用由 OutputSettings 属性返回的 XmlWriterSettings 对象来创建 XmlWriter。 这样可以确保 XmlWriter 的输出设置是正确的。

documentResolver
XmlResolver

用于解析 XSLT document() 函数的 XmlResolver。 如果为 null,则不解析 document() 函数。

适用于