XslTransform.Transform 方法

定义

使用加载的 XSLT 样式表转换 XML 数据。

重载

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlReader

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 TextWriter

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 Stream

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlWriter

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 TextWriter

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 Stream

Transform(XPathNavigator, XsltArgumentList, XmlWriter)
已过时。

使用指定的参数转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlWriter

Transform(XPathNavigator, XsltArgumentList, TextWriter)
已过时。

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 TextWriter

Transform(String, String, XmlResolver)

转换输入文件中的 XML 数据并将结果输出到输出文件。

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
已过时。

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlWriter

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlReader

Transform(IXPathNavigable, XsltArgumentList, TextWriter)
已过时。

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 TextWriter

Transform(IXPathNavigable, XsltArgumentList, Stream)
已过时。

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 Stream

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的参数转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlWriter

Transform(XPathNavigator, XsltArgumentList)
已过时。

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlReader

Transform(IXPathNavigable, XsltArgumentList)
已过时。

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlReader

Transform(String, String)
已过时。

转换输入文件中的 XML 数据并将结果输出到输出文件。

Transform(XPathNavigator, XsltArgumentList, Stream)
已过时。

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 Stream

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

Transform(XPathNavigator, XsltArgumentList, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlReader

public:
 System::Xml::XmlReader ^ Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::Xml::XmlResolver ^ resolver);
public System.Xml.XmlReader Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.Xml.XmlResolver? resolver);
public System.Xml.XmlReader Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlResolver resolver);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlResolver -> System.Xml.XmlReader
Public Function Transform (input As XPathNavigator, args As XsltArgumentList, resolver As XmlResolver) As XmlReader

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(XPathNavigator, XsltArgumentList, XmlResolver)

返回

XmlReader

包含转换结果的 XmlReader

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,仍 XPathNavigator 保持其原始状态。 这意味着在调用方法后 Transform ,该节点在转换过程之前是当前节点。

由于 XmlReader 提供只读输出,因此 xsl:output 将忽略该元素。 有关详细信息,请参阅 XslTransform 中的输出

使用此方法可以执行源文档的异步转换。

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 TextWriter

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::TextWriter ^ output, System::Xml::XmlResolver ^ resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.IO.TextWriter output, System.Xml.XmlResolver? resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output, System.Xml.XmlResolver resolver);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As TextWriter, resolver As XmlResolver)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
TextWriter

要输出到的 TextWriter

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(XPathNavigator, XsltArgumentList, TextWriter, XmlResolver)

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,保留 XPathNavigator 其原始状态。 这意味着在调用方法后 Transform ,节点是转换过程之前的当前节点。

在输出到元素TextWriter时,不支持元素上的xsl:output编码属性。 有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 Stream

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::Stream ^ output, System::Xml::XmlResolver ^ resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.IO.Stream output, System.Xml.XmlResolver? resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output, System.Xml.XmlResolver resolver);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.Stream * System.Xml.XmlResolver -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As Stream, resolver As XmlResolver)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
Stream

要输出到的流。

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(XPathNavigator, XsltArgumentList, Stream, XmlResolver)

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

示例

以下示例将客户表加载到某个 XmlDataDocument 表中,并执行 XSLT 转换,将客户数据拉取到 HTML 表中。 此示例使用 Microsoft SQL Server 2000 Northwind 数据库。

using System;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public class Sample
{
  public static void Main()
  {

     // Create a DataSet and load it with customer data.
     DataSet dsNorthwind = new DataSet();
     String sConnect;
     sConnect="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind";
     SqlConnection nwconnect = new SqlConnection(sConnect);
     String sCommand = "Select * from Customers where Region='WA'";
     SqlDataAdapter myDataAdapter = new SqlDataAdapter(sCommand, nwconnect);
     myDataAdapter.Fill(dsNorthwind,"Customers");

     // Load the DataSet into an XmlDataDocument.
     XmlDataDocument doc = new XmlDataDocument(dsNorthwind);

     // Create the XslTransform object and load the stylesheet.
     XslTransform xsl = new XslTransform();
     xsl.Load("customers.xsl");

     // Create an XPathNavigator to use in the transform.
     XPathNavigator nav = doc.CreateNavigator();

     // Create a FileStream object.
     FileStream fs = new FileStream("cust.html", FileMode.Create);

     // Transform the data.
     xsl.Transform(nav, null, fs, null);
  }
}
Imports System.IO
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xml
Imports System.Xml.XPath
Imports System.Xml.Xsl

public class Sample

  public shared sub Main()

     ' Create a DataSet and load it with customer data.
     Dim dsNorthwind as DataSet = new DataSet()        
     Dim sConnect as String           
     sConnect="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"     
     Dim nwconnect as SqlConnection
     nwconnect = new SqlConnection(sConnect)
     Dim sCommand as String = "Select * from Customers where Region='WA'"
     Dim myDataAdapter as SqlDataAdapter
     myDataAdapter = new SqlDataAdapter(sCommand, nwconnect)
     myDataAdapter.Fill(dsNorthwind,"Customers")

     ' Load the DataSet into an XmlDataDocument.
     Dim doc as XmlDataDocument = new XmlDataDocument(dsNorthwind)   

     ' Create the XslTransform object and load the stylesheet.
     Dim xsl as XslTransform = new XslTransform()     
     xsl.Load("customers.xsl")

     ' Create an XPathNavigator to use in the transform.
     Dim nav as XPathNavigator = doc.CreateNavigator()

     ' Create a FileStream object.
     Dim fs as FileStream = new FileStream("cust.html", FileMode.Create)
 
     ' Transform the data.
     xsl.Transform(nav, nothing, fs, nothing)
    
  end sub
end class

示例使用 customers.xsl 文件作为输入。

<!-- Stylesheet to sort customers by city-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:template match="NewDataSet">
    <HTML>
      <BODY>
        <TABLE BORDER="2">
          <TR>
            <TD>Company Name</TD>
            <TD>Contact Name</TD>
            <TD>City</TD>
          </TR>
         <xsl:apply-templates select="Customers">
            <xsl:sort select="City"/>
         </xsl:apply-templates>
        </TABLE>
      </BODY>
    </HTML>
  </xsl:template>

  <xsl:template match="Customers">
    <TR>
      <TD><xsl:value-of select="CompanyName"/></TD>
      <TD><xsl:value-of select="ContactName"/></TD>
      <TD><xsl:value-of select="City"/></TD>
    </TR>
  </xsl:template>

</xsl:stylesheet>

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,该 XPathNavigator 转换仍处于其原始状态。 这意味着在调用方法后 Transform ,节点是转换过程之前的当前节点。

有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlWriter

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

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
XmlWriter

要输出到的 XmlWriter

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

示例

以下示例将 XML 文档转换为 HTML 文档。 它显示表中每本书的 ISBN、标题和价格。

#using <System.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Xml::Xsl;
using namespace System::Xml::XPath;

int main()
{
   String^ filename = "books.xml";
   String^ stylesheet = "output.xsl";

   //Load the stylesheet.
   XslTransform^ xslt = gcnew XslTransform;
   xslt->Load( stylesheet );

   //Load the file to transform.
   XPathDocument^ doc = gcnew XPathDocument( filename );

   //Create an XmlTextWriter which outputs to the console.
   XmlTextWriter^ writer = gcnew XmlTextWriter( Console::Out );

   //Transform the file and send the output to the console.
   xslt->Transform(doc,nullptr,writer,nullptr);
   writer->Close();
}
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;

public class Sample
{
  private const String filename = "books.xml";
  private const String stylesheet = "output.xsl";

  public static void Main()
  {
    //Load the stylesheet.
    XslTransform xslt = new XslTransform();
    xslt.Load(stylesheet);

    //Load the file to transform.
    XPathDocument doc = new XPathDocument(filename);

    //Create an XmlTextWriter which outputs to the console.
    XmlTextWriter writer = new XmlTextWriter(Console.Out);

    //Transform the file and send the output to the console.
    xslt.Transform(doc, null, writer, null);
    writer.Close();
  }
}
Option Strict
Option Explicit

Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Xml.XPath

Public Class Sample
    Private Shared filename1 As String = "books.xml"
    Private Shared stylesheet1 As String = "output.xsl"
    
    
    Public Shared Sub Main()
        'Load the stylesheet.
        Dim xslt As New XslTransform()
        xslt.Load(stylesheet1)
        
        'Load the file to transform.
        Dim doc As New XPathDocument(filename1)
        
        'Create an XmlTextWriter which outputs to the console.
        Dim writer As New XmlTextWriter(Console.Out)
        
        'Transform the file and send the output to the console.
        xslt.Transform(doc, Nothing, writer, Nothing)
        writer.Close()
    End Sub
End Class

示例使用下列两个输入文件。

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>

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:paramxsl:output在) 忽略输出到XmlWriter (xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 的输出

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须创建一个XmlDocument仅包含节点片段并将其传递给XmlDocumentTransform该方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out, null);  

本示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />  
  <template match="/">  
  Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 TextWriter

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

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
TextWriter

要输出到的 TextWriter

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(IXPathNavigable, XsltArgumentList, TextWriter, XmlResolver)

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

示例

以下示例转换 XML 文件并输出 HTML 字符串。 和StringReaderStringWriter类用于读取和写入字符串。

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

public class Sample {

  public static void Main() {

    // Create a string containing the XSLT stylesheet.
    String xsltString =
    @"<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
        <xsl:template match='bookstore'>
           <HTML>
              <HEAD>
                 <TITLE>Book Titles</TITLE>
             </HEAD>
             <BODY>
                <xsl:apply-templates select='book'/>
             </BODY>
          </HTML>
        </xsl:template>
        <xsl:template match='book'>
          <P><xsl:value-of select='title'/></P>
        </xsl:template>
        </xsl:stylesheet>";

    // Create the XslTransform object.
    XslTransform xslt = new XslTransform();

    // Load the stylesheet.
    StringReader rdr = new StringReader(xsltString);
    xslt.Load(new XPathDocument(rdr), null, null);

    // Transform the file and output an HTML string.
    string HTMLoutput;
    StringWriter writer = new StringWriter();
    xslt.Transform(new XPathDocument("books.xml"), null, writer, null);
    HTMLoutput = writer.ToString();
  }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports System.Xml.XPath

public class Sample 

  public shared sub Main() 
   
    ' Create a string containing the XSLT stylesheet.
    Dim xsltString as String 
    xsltString = "<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>" & _
    "   <xsl:template match='bookstore'>" & _
    "      <HTML>" & _
    "         <HEAD>" & _
    "            <TITLE>Book Titles</TITLE>" & _
    "       </HEAD>" & _
    "        <BODY>" & _
    "           <xsl:apply-templates select='book'/>" & _
    "        </BODY>" & _
    "     </HTML>" & _
    "   </xsl:template>" & _
    "  <xsl:template match='book'>" & _
    "     <P><xsl:value-of select='title'/></P>" & _
    "   </xsl:template>" & _
    "   </xsl:stylesheet>"

    ' Create the XslTransform object.
    Dim xslt as XslTransform = new XslTransform()

    ' Load the stylesheet.
    Dim rdr as StringReader = new StringReader(xsltString)
    xslt.Load(new XPathDocument(rdr), nothing, nothing)

    ' Transform the file and output an HTML string.
    Dim HTMLoutput as string
    Dim writer as StringWriter = new StringWriter()
    xslt.Transform(new XPathDocument("books.xml"), nothing, writer, nothing)
    HTMLoutput = writer.ToString()

  end sub
end class

示例使用 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>

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param

输出到元素TextWriter时不支持元素上的xsl:output编码属性。 有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建包含XmlDocument节点片段并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out, null);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, Stream, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 Stream

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

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
Stream

要输出到的流。

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

示例

以下示例在 ASP.NET 页中执行转换。

<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ import NameSpace="System.Web" %>
<%@ Import Namespace="System.Xml.XPath" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<html>
   <script language="C#" runat="server">
      void Page_Load(Object sender, EventArgs e) 
      {
         // Load the XML document to transform.
         XPathDocument doc = new XPathDocument(Server.MapPath("books.xml"));

         // Load the stylesheet and perform the transform.
         XslTransform xslt = new XslTransform();
         xslt.Load(Server.MapPath("output.xsl"));
         xslt.Transform(doc, null, Response.OutputStream, null);
        
      }
   </script>
</html>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ import NameSpace="System.Web" %>
<%@ Import Namespace="System.Xml.XPath" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<html>
   <script language="VB" runat="server">
      sub Page_Load(sender as Object, e as EventArgs) 

         ' Load the XML document to transform.
         dim doc as XPathDocument = new XPathDocument(Server.MapPath("books.xml"))

         ' Load the stylesheet and perform the transform.
         dim xslt as XslTransform = new XslTransform()
         xslt.Load(Server.MapPath("output.xsl"))
         xslt.Transform(doc, nothing, Response.OutputStream, nothing)
        
      end sub
   </script>
</html>

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建包含XmlDocument节点片段并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out, null);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, XmlWriter)

注意

You should pass XmlResolver to Transform() method

使用指定的参数转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlWriter

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::Xml::XmlWriter ^ output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.Xml.XmlWriter output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlWriter output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlWriter output);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As XmlWriter)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
XmlWriter

要输出到的 XmlWriter

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,该 XPathNavigator 转换将保持其原始状态。 这意味着在转换过程之前为当前节点的节点在调用方法后 Transform 仍为当前节点。

xsl:output) 忽略输出到XmlWriter (xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 中的输出

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, TextWriter)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 TextWriter

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::TextWriter ^ output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.IO.TextWriter output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As TextWriter)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
TextWriter

要输出到的 TextWriter

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,该 XPathNavigator 转换将保持其原始状态。 这意味着在调用方法后 Transform ,该节点在转换过程之前是当前节点。

输出到元素TextWriter时不支持元素上的xsl:output编码属性。 有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

另请参阅

适用于

Transform(String, String, XmlResolver)

转换输入文件中的 XML 数据并将结果输出到输出文件。

public:
 void Transform(System::String ^ inputfile, System::String ^ outputfile, System::Xml::XmlResolver ^ resolver);
public void Transform (string inputfile, string outputfile, System.Xml.XmlResolver? resolver);
public void Transform (string inputfile, string outputfile, System.Xml.XmlResolver resolver);
member this.Transform : string * string * System.Xml.XmlResolver -> unit
Public Sub Transform (inputfile As String, outputfile As String, resolver As XmlResolver)

参数

inputfile
String

要转换的源文档的 URL。

outputfile
String

输出文件的 URL。

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform

示例

以下示例执行 XSLT 转换并输出到文件。 XmlUrlResolver使用具有默认凭据的凭据解析外部资源。 有关详细信息,请参阅DefaultCredentials

// Create a resolver with default credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = System::Net::CredentialCache::DefaultCredentials;

// Create the XslTransform object.
XslTransform^ xslt = gcnew XslTransform;

// Load the stylesheet.
xslt->Load( "http://myServer/data/authors.xsl", resolver );

// Transform the file.
xslt->Transform( "books.xml", "books.html", resolver );

// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create the XslTransform object.
XslTransform xslt = new XslTransform();

// Load the stylesheet.
xslt.Load("http://myServer/data/authors.xsl", resolver);

// Transform the file.
xslt.Transform("books.xml", "books.html", resolver);

' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Create the XslTransform object.
Dim xslt as XslTransform = new XslTransform()

' Load the stylesheet.
xslt.Load("http://myServer/data/authors.xsl", resolver)

' Transform the file. 
xslt.Transform("books.xml", "titles.xml", resolver)

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, XmlWriter)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlWriter

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::Xml::XmlWriter ^ output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? args, System.Xml.XmlWriter output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlWriter output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlWriter output);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As IXPathNavigable, args As XsltArgumentList, output As XmlWriter)

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
XmlWriter

要输出到的 XmlWriter

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

args 样式表中定义的元素匹配 xsl:paramxsl:output) 忽略输出到XmlWriter (xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 中的输出

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建包含XmlDocument节点片段并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />  
  <template match="/">  
  Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlReader

public:
 System::Xml::XmlReader ^ Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::Xml::XmlResolver ^ resolver);
public System.Xml.XmlReader Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? args, System.Xml.XmlResolver? resolver);
public System.Xml.XmlReader Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlResolver resolver);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlResolver -> System.Xml.XmlReader
Public Function Transform (input As IXPathNavigable, args As XsltArgumentList, resolver As XmlResolver) As XmlReader

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(IXPathNavigable, XsltArgumentList, XmlResolver)

返回

XmlReader

包含转换结果的 XmlReader

示例

以下示例转换 XML 文档并将结果输出到一个 XmlReader。 具有所需凭据的凭据 XmlUrlResolver 用于处理任何 XSLT document() 函数。

// Create the XslTransform object.
XslTransform^ xslt = gcnew XslTransform;

// Load the stylesheet.
xslt->Load( "titles.xsl" );

// Create a resolver and specify the necessary credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
System::Net::NetworkCredential^ myCred;
myCred = gcnew System::Net::NetworkCredential( UserName, SecurelyStoredPassword, Domain );
resolver->Credentials = myCred;

// Transform the file using the resolver. The resolver is used
// to process the XSLT document() function.
XPathDocument^ doc = gcnew XPathDocument( "books.xml" );
XmlReader^ reader = xslt->Transform( doc, nullptr, resolver );

// Load the reader into a new document for more processing.
XmlDocument^ xmldoc = gcnew XmlDocument;
xmldoc->Load( reader );
// Create the XslTransform object.
XslTransform xslt = new XslTransform();

// Load the stylesheet.
xslt.Load("titles.xsl");

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

// Transform the file using the resolver. The resolver is used
// to process the XSLT document() function.
XPathDocument doc = new XPathDocument("books.xml");
XmlReader reader = xslt.Transform(doc, null, resolver);

// Load the reader into a new document for more processing.
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(reader);
' Create the XslTransform object.
Dim xslt as XslTransform = new XslTransform()

' Load the stylesheet.
xslt.Load("titles.xsl")

' Create a resolver and specify the necessary credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
Dim myCred as System.Net.NetworkCredential 
myCred = new System.Net.NetworkCredential(UserName,SecurelyStoredPassword,Domain)
resolver.Credentials = myCred

' Transform thefile using the resolver. The resolver is used
' to process the XSLT document() function.
Dim doc as XPathDocument = new XPathDocument("books.xml")
Dim reader as XmlReader = xslt.Transform(doc, nothing, resolver)

' Load the reader into a new document for more processing.
Dim xmldoc as XmlDocument = new XmlDocument()
xmldoc.Load(reader)

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:paramxsl:output当输出到XmlReader (元素被忽略) xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 中的输出

使用此方法可以执行源文档的异步转换。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建一个XmlDocument包含节点片段,并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out, null);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, TextWriter)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 TextWriter

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::TextWriter ^ output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? args, System.IO.TextWriter output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.IO.TextWriter output);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As IXPathNavigable, args As XsltArgumentList, output As TextWriter)

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
TextWriter

要输出到的 TextWriter

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

args 样式表中定义的元素匹配 xsl:param

输出到元素TextWriter时不支持元素上的xsl:output编码属性。 有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建一个XmlDocument包含节点片段,并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList, Stream)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 Stream

public:
 void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::Stream ^ output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? args, System.IO.Stream output);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As IXPathNavigable, args As XsltArgumentList, output As Stream)

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

output
Stream

要输出到的流。

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

args 样式表中定义的元素匹配 xsl:param

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建包含XmlDocument节点片段并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

使用指定的参数转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlWriter

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::Xml::XmlWriter ^ output, System::Xml::XmlResolver ^ resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.Xml.XmlWriter output, System.Xml.XmlResolver? resolver);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.Xml.XmlWriter output, System.Xml.XmlResolver resolver);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As XmlWriter, resolver As XmlResolver)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
XmlWriter

要输出到的 XmlWriter

resolver
XmlResolver

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

完成 XmlResolver 方法后不缓存 Transform(XPathNavigator, XsltArgumentList, XmlWriter, XmlResolver)

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

示例

以下示例在执行 XSLT 转换之前加载和编辑 XML 文档。

XmlDocument^ doc = gcnew XmlDocument;
doc->Load( "books.xml" );

// Modify the XML file.
XmlElement^ root = doc->DocumentElement;
root->FirstChild->LastChild->InnerText = "12.95";

// Create an XPathNavigator to use for the transform.
XPathNavigator^ nav = root->CreateNavigator();

// Transform the file.
XslTransform^ xslt = gcnew XslTransform;
xslt->Load( "output.xsl" );
XmlTextWriter^ writer = gcnew XmlTextWriter( "books.html", nullptr );
xslt->Transform( nav, nullptr, writer, nullptr);
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");

// Modify the XML file.
XmlElement root = doc.DocumentElement;
root.FirstChild.LastChild.InnerText = "12.95";

// Create an XPathNavigator to use for the transform.
XPathNavigator nav = root.CreateNavigator();

// Transform the file.
XslTransform xslt = new XslTransform();
xslt.Load("output.xsl");
XmlTextWriter writer = new XmlTextWriter("books.html", null);
xslt.Transform(nav, null, writer, null);
Dim doc as XmlDocument = new XmlDocument()
doc.Load("books.xml")

' Modify the XML file.
Dim root as XmlElement = doc.DocumentElement
root.FirstChild.LastChild.InnerText = "12.95"

' Create an XPathNavigator to use for the transform.
Dim nav as XPathNavigator = root.CreateNavigator()

' Transform the file.
Dim xslt as XslTransform = new XslTransform()
xslt.Load("output.xsl")
Dim writer as XmlTextWriter = new XmlTextWriter("books.html", nothing)
xslt.Transform(nav,nothing, writer, nothing)

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,保留 XPathNavigator 其原始状态。 这意味着在调用方法后 Transform ,节点(在转换过程之前是当前节点)。

xsl:output在) 忽略输出到XmlWriter (xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 的输出

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 XmlReader

public:
 System::Xml::XmlReader ^ Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args);
public System.Xml.XmlReader Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args);
public System.Xml.XmlReader Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public System.Xml.XmlReader Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList -> System.Xml.XmlReader
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList -> System.Xml.XmlReader
Public Function Transform (input As XPathNavigator, args As XsltArgumentList) As XmlReader

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

返回

XmlReader

包含转换结果的 XmlReader

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,仍 XPathNavigator 保持其原始状态。 这意味着在调用方法后 Transform ,该节点在转换过程之前是当前节点。

由于 XmlReader 提供只读输出,因此 xsl:output 将忽略该元素。 有关详细信息,请参阅 XslTransform 中的输出

使用此方法可以执行源文档的异步转换。

备注

此方法已过时。 属性的设置 XmlResolver 确定如何解析 XSLT 文档 () 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

另请参阅

适用于

Transform(IXPathNavigable, XsltArgumentList)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 IXPathNavigable 中的 XML 数据,并将结果输出到 XmlReader

public:
 System::Xml::XmlReader ^ Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ args);
public System.Xml.XmlReader Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? args);
public System.Xml.XmlReader Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public System.Xml.XmlReader Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList args);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList -> System.Xml.XmlReader
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList -> System.Xml.XmlReader
Public Function Transform (input As IXPathNavigable, args As XsltArgumentList) As XmlReader

参数

input
IXPathNavigable

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

args
XsltArgumentList

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

返回

XmlReader

包含转换结果的 XmlReader

属性

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

args 样式表中定义的元素匹配 xsl:paramxsl:output当输出到XmlReader (元素被忽略) xsl:output时,不支持该元素。 有关详细信息,请参阅 XslTransform 中的输出

使用此方法可以执行源文档的异步转换。

转换将应用于整个文档。 换句话说,如果你传入文档根节点以外的一个节点,并不能防止转换进程访问已加载文档的所有节点。 若要转换节点片段,必须只创建包含XmlDocument节点片段并将其传递给XmlDocumentTransform方法。

以下示例对节点片段执行转换。

XslTransform xslt = new XslTransform();       
xslt.Load("print_root.xsl");  
XmlDocument doc = new XmlDocument();  
doc.Load("library.xml");  
// Create a new document containing just the node fragment.  
XmlNode testNode = doc.DocumentElement.FirstChild;   
XmlDocument tmpDoc = new XmlDocument();   
tmpDoc.LoadXml(testNode.OuterXml);  
// Pass the document containing the node fragment   
// to the Transform method.  
Console.WriteLine("Passing " + tmpDoc.OuterXml + " to print_root.xsl");  
xslt.Transform(tmpDoc, null, Console.Out);  

该示例使用 library.xmlprint_root.xsl 文件作为输入和输出,并将以下内容输出到控制台。

Passing <book genre="novel" ISBN="1-861001-57-5"><title>Pride And Prejudice</title></book> to print_root.xsl   
Root node is book.  

library.xml

<library>  
  <book genre='novel' ISBN='1-861001-57-5'>  
     <title>Pride And Prejudice</title>  
  </book>  
  <book genre='novel' ISBN='1-81920-21-2'>  
     <title>Hook</title>  
  </book>  
</library>  

print_root.xsl

<stylesheet version="1.0" xmlns="http://www.w3.org/1999/XSL/Transform" >  
  <output method="text" />   
  <template match="/">  
     Root node is  <value-of select="local-name(//*[position() = 1])" />   
  </template>  
</stylesheet>  

另请参阅

适用于

Transform(String, String)

注意

You should pass XmlResolver to Transform() method

转换输入文件中的 XML 数据并将结果输出到输出文件。

public:
 void Transform(System::String ^ inputfile, System::String ^ outputfile);
public void Transform (string inputfile, string outputfile);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (string inputfile, string outputfile);
member this.Transform : string * string -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : string * string -> unit
Public Sub Transform (inputfile As String, outputfile As String)

参数

inputfile
String

要转换的源文档的 URL。

outputfile
String

输出文件的 URL。

属性

示例

以下示例使用output.xsl样式表转换books.xml文件,并将结果输出到books.html文件。

// Create the XslTransform object.
XslTransform^ xslt = gcnew XslTransform;

// Load the stylesheet.
xslt->Load( "output.xsl" );

// Transform the file.
xslt->Transform("books.xml","books.html");
//Create the XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("output.xsl");

//Transform the file.
xslt.Transform("books.xml", "books.html");
'Create the XslTransform object.
Dim xslt as XslTransform = new XslTransform()

'Load the stylesheet.
xslt.Load("output.xsl")

'Transform the 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>

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 该 XslCompiledTransform 类是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

备注

此方法在.NET Framework版本 1.1 中已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象 XmlResolver 作为其参数之一的方法。

另请参阅

适用于

Transform(XPathNavigator, XsltArgumentList, Stream)

注意

You should pass XmlResolver to Transform() method

使用指定的 args 转换 XPathNavigator 中的 XML 数据,并将结果输出到 Stream

public:
 void Transform(System::Xml::XPath::XPathNavigator ^ input, System::Xml::Xsl::XsltArgumentList ^ args, System::IO::Stream ^ output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList? args, System.IO.Stream output);
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output);
[System.Obsolete("You should pass XmlResolver to Transform() method")]
public void Transform (System.Xml.XPath.XPathNavigator input, System.Xml.Xsl.XsltArgumentList args, System.IO.Stream output);
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
[<System.Obsolete("You should pass XmlResolver to Transform() method")>]
member this.Transform : System.Xml.XPath.XPathNavigator * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As XPathNavigator, args As XsltArgumentList, output As Stream)

参数

input
XPathNavigator

XPathNavigator,包含要转换的数据。

args
XsltArgumentList

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

output
Stream

要输出到的流。

属性

例外

处理 XSLT 转换时出错。

注意:这是对早期版本行为的更改。 如果使用的是 Microsoft .NET Framework 1.1 版或更早版本,则会引发 XsltException

注解

备注

XslTransform类在 .NET Framework 版本 2.0 中已过时。 类 XslCompiledTransform 是新的 XSLT 处理器。 有关详细信息,请参阅 使用 XslCompiledTransform 类 并从 XslTransform 类迁移

XslTransform 支持 XSLT 1.0 语法。 XSLT 样式表必须包含命名空间声明 xmlns:xsl= http://www.w3.org/1999/XSL/Transform

args 样式表中定义的元素匹配 xsl:param 。 转换选择应用于整个文档。 换句话说,如果当前节点在文档根节点以外的节点树上设置,这不会阻止转换过程访问加载的文档中的所有节点。 执行转换后,仍 XPathNavigator 保持其原始状态。 这意味着在调用方法后 Transform ,该节点在转换过程之前是当前节点。

有关支持哪些xsl:output属性的详细信息,请参阅 XslTransform 的输出

备注

此方法现已过时。 属性的设置 XmlResolver 确定如何解析 XSLT document() 函数。 建议的做法是使用 Transform 采用对象作为其参数之一的方法 XmlResolver

另请参阅

适用于