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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl: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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl: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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl: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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl:param 樣式表單中定義的專案相符。 ) 忽略輸出至 XmlWriter (xsl:output 時,不支援專案 xsl:output 。 如需詳細資訊,請參閱 XslTransform 的輸出

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl:param 樣式表單中定義的專案相符。

輸出至 TextWriter 時,不支援專案上的 xsl:output 編碼屬性。 如需支援屬性的特定資料 xsl:output ,請參閱XslTransform 的輸出

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須只建立 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform 方法完成後不會加以快取。

例外狀況

處理 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

argsxsl:param 樣式表單中定義的專案相符。

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須只建立 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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

argsxsl: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

argsxsl: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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform 方法完成後不會加以快取。

範例

下列範例會執行 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 物件做為其其中一個引數。

argsxsl:param 樣式表單中定義的專案相符。 xsl:output在輸出至 XmlWriter (xsl:output 時,不支援元素) 。 如需詳細資訊 ,請參閱 XslTransform 的輸出

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須只建立 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(IXPathNavigable, XsltArgumentList, XmlResolver) 方法完成後不會加以快取。

傳回

XmlReader

包含轉換結果的 XmlReader

範例

下列範例會轉換 XML 檔,並將結果輸出至 XmlReaderXmlUrlResolver具有必要認證的 ,可用來處理任何 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

argsxsl:param 樣式表單中定義的專案相符。 xsl:output當輸出至 XmlReader (xsl:output 忽略元素時,不支援元素) 。 如需詳細資訊 ,請參閱 XslTransform 的輸出

這個方法可讓您執行原始檔案的非同步轉換。

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立 XmlDocument 只包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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 物件做為其其中一個引數。

argsxsl:param 樣式表單中定義的專案相符。

輸出至 TextWriter 時,不支援專案上的 xsl:output 編碼屬性。 如需支援屬性的特定資料 xsl:output ,請參閱XslTransform 的輸出

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立 XmlDocument 只包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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 物件做為其其中一個引數。

argsxsl:param 樣式表單中定義的專案相符。

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須只建立 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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

XmlResolver 用來解析 XSLT document() 函式。 如果值為 null,則不會解析 document() 函式。

XmlResolverTransform(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

argsxsl:param 樣式表單中定義的專案相符。 轉換選取範圍會套用至整個檔。 換句話說,如果目前節點是在檔根節點以外的節點樹狀結構上設定,這不會防止轉換程式存取載入的檔中的所有節點。 執行轉換之後,會 XPathNavigator 維持其原始狀態。 這表示在轉換程式之前目前的節點,在呼叫 方法之後 Transform 仍會保留目前的節點。

) 忽略輸出至 XmlWriter (xsl:output 時,不支援專案 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

argsxsl: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 物件做為其其中一個引數。

argsxsl:param 樣式表單中定義的專案相符。 xsl:output當輸出至 XmlReader (xsl:output 忽略元素時,不支援元素) 。 如需詳細資訊 ,請參閱 XslTransform 的輸出

這個方法可讓您執行原始檔案的非同步轉換。

轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須只建立 XmlDocument 包含節點片段的 ,並將該 XmlDocument 片段傳遞至 Transform 方法。

下列範例會在節點片段上執行轉換。

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.xml 使用 和 print_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。

屬性

範例

下列範例會 books.xml 使用 output.xsl 樣式表單轉換檔案,並將結果輸出至 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

argsxsl:param 樣式表單中定義的專案相符。 轉換選取範圍會套用至整個檔。 換句話說,如果目前節點是在檔根節點以外的節點樹狀結構上設定,這不會防止轉換程式存取載入的檔中的所有節點。 執行轉換之後,會 XPathNavigator 維持其原始狀態。 這表示在轉換程式之前目前節點,在呼叫 方法之後 Transform ,仍會保留目前的節點。

如需支援屬性的特定資料 xsl:output ,請參閱XslTransform 的輸出

注意

此方法現在已過時。 屬性的 XmlResolver 設定會決定如何解析 XSLT document() 函式。 建議的做法是使用 Transform 方法,該方法會採用 XmlResolver 物件做為其其中一個引數。

另請參閱

適用於