XslCompiledTransform.Transform 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
執行 XSLT 轉換。
多載
備註
注意
在偵錯模式中編譯的 XSLT 與在發行模式中編譯的 XSLT 之間有一些差異。 在某些情況下,偵測模式中編譯的樣式表在 Load 期間將不會擲回錯誤,但是稍後會在 Transform 期間失敗。 在發行模式中編譯的相同樣式表在 Load 期間將會失敗。 這類行為範例的情況是在將非節點集型別的變數指派給需要節點集的運算式時。
Transform(XmlReader, XsltArgumentList, TextWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 XmlReader 物件所指定的輸入文件執行轉換,並將結果輸出至 TextWriter。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As TextWriter)
參數
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- TextWriter
您要輸出的目標 TextWriter。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
備註
如果樣式表單包含 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
另請參閱
適用於
Transform(IXPathNavigable, XsltArgumentList, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 IXPathNavigable 物件所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As XmlWriter)
參數
- input
- IXPathNavigable
實作 IXPathNavigable 介面的物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (一般為 XmlDocument),或是包含要轉換的資料的 XPathDocument。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的 OutputSettings 物件來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
備註
如果已啟用 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
這個方法不支援 xsl:strip-space
專案。 如果您的編譯樣式表單包含 xsl:strip-space
元素,您必須使用 Transform 採用 做為輸入引數的多載 XmlReader 。
IXPathNavigable 介面是在 XmlNode 及 XPathDocument 類別中實作的。 這些類別代表 XML 資料的記憶體中快取。
XmlNode 類別是以 W3C 文件物件模型 (DOM) 為基礎,並包含編輯功能。
XPathDocument 類別是以 XPath 資料模型為基礎的唯讀資料存放區。 XPathDocument 是建議用於 XSLT 處理的類別。 與 XmlNode 類別相比,它可提供更高的效能。
轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只包含節點片段的物件,並將該物件傳遞至 Transform 方法。 如需詳細資訊,請參閱如何:轉換節點片段。
另請參閱
適用於
Transform(IXPathNavigable, XsltArgumentList, TextWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 IXPathNavigable 物件所指定的輸入文件執行轉換,並將結果輸出至 TextWriter。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As TextWriter)
參數
- input
- IXPathNavigable
實作 IXPathNavigable 介面的物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (一般為 XmlDocument),或是包含要轉換的資料的 XPathDocument。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- TextWriter
您要輸出的目標 TextWriter。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
備註
如果已啟用 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
這個方法不支援 xsl:strip-space
專案。 如果您的編譯樣式表單包含 xsl:strip-space
元素,您必須使用 Transform 採用 做為輸入引數的多載 XmlReader 。
IXPathNavigable 介面是在 XmlNode 及 XPathDocument 類別中實作的。 這些類別代表 XML 資料的記憶體中快取。
XmlNode 類別是以 W3C 文件物件模型 (DOM) 為基礎,並包含編輯功能。
XPathDocument 類別是以 XPath 資料模型為基礎的唯讀資料存放區。 XPathDocument 是建議用於 XSLT 處理的類別。 與 XmlNode 類別相比,它可提供更高的效能。
轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只包含節點片段的物件,並將該物件傳遞至 Transform 方法。 如需詳細資訊,請參閱如何:轉換節點片段。
另請參閱
適用於
Transform(IXPathNavigable, XsltArgumentList, Stream)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 IXPathNavigable 物件所指定的輸入文件執行轉換,並將結果輸出至資料流。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As Stream)
參數
- input
- IXPathNavigable
實作 IXPathNavigable 介面的物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (一般為 XmlDocument),或是包含要轉換的資料的 XPathDocument。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- Stream
要輸出至的資料流。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
範例
下列範例會執行 XSLT 轉換,並輸出至 FileStream 。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Create the FileStream.
using (FileStream fs = new FileStream(@"c:\data\output.xml", FileMode.Create))
{
// Execute the transformation.
xslt.Transform(new XPathDocument("books.xml"), null, fs);
}
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Create the FileStream.
Using fs As New FileStream("c:\data\output.xml", FileMode.Create)
' Execute the transformation.
xslt.Transform(New XPathDocument("books.xml"), Nothing, fs)
End Using
備註
如果已啟用 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
這個方法不支援 xsl:strip-space
專案。 如果您的編譯樣式表單包含 xsl:strip-space
元素,您必須使用 Transform 採用 做為輸入引數的多載 XmlReader 。
IXPathNavigable 介面是在 XmlNode 及 XPathDocument 類別中實作的。 這些類別代表 XML 資料的記憶體中快取。
XmlNode 類別是以 W3C 文件物件模型 (DOM) 為基礎,並包含編輯功能。
XPathDocument 類別是以 XPath 資料模型為基礎的唯讀資料存放區。 XPathDocument 是建議用於 XSLT 處理的類別。 與 XmlNode 類別相比,它可提供更高的效能。
轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只包含節點片段的物件,並將該物件傳遞至 Transform 方法。 如需詳細資訊,請參閱如何:轉換節點片段。
另請參閱
適用於
Transform(XmlReader, XsltArgumentList, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 XmlReader 物件所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As XmlWriter)
參數
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的 OutputSettings 物件來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
備註
如果樣式表單包含 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
另請參閱
適用於
Transform(XmlReader, XsltArgumentList, Stream)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 XmlReader 物件所指定的輸入文件執行轉換,並將結果輸出至資料流。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As Stream)
參數
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- Stream
要輸出至的資料流。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
備註
如果樣式表單包含 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
另請參閱
適用於
Transform(String, String)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 URI 所指定的輸入文件執行轉換,並將結果輸出至檔案。
public:
void Transform(System::String ^ inputUri, System::String ^ resultsFile);
public void Transform (string inputUri, string resultsFile);
member this.Transform : string * string -> unit
Public Sub Transform (inputUri As String, resultsFile As String)
參數
- inputUri
- String
輸入文件的 URI。
- resultsFile
- String
輸出檔案的 URI。
例外狀況
inputUri
或 resultsFile
的值為 null
。
執行 XSLT 轉換時發生錯誤。
找不到輸入文件。
inputUri
或 resultsFile
值包含找不到的檔案名稱或目錄。
inputUri
或 resultsFile
不是有效的 URI。
載入輸入文件時,發生剖析錯誤。
範例
下列範例會執行檔案的轉換和輸出。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html");
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Execute the transform and output the results to a file.
xslt.Transform("books.xml", "books.html")
此範例使用下列兩個輸入檔:
books.xml
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
output.xsl
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="bookstore">
<HTML>
<BODY>
<TABLE BORDER="2">
<TR>
<TD>ISBN</TD>
<TD>Title</TD>
<TD>Price</TD>
</TR>
<xsl:apply-templates select="book"/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="book">
<TR>
<TD><xsl:value-of select="@ISBN"/></TD>
<TD><xsl:value-of select="title"/></TD>
<TD><xsl:value-of select="price"/></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
備註
這個方法會使用沒有使用者認證的預設值 XmlUrlResolver 來解析輸入和輸出檔案。 如果其中任何資源都位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
XmlReader具有預設設定的 會用來載入輸入檔。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Transform 方法。
另請參閱
適用於
Transform(String, XsltArgumentList, TextWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 URI 所指定的輸入文件執行轉換,並將結果輸出至 TextWriter。
public:
void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::TextWriter ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.TextWriter results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.IO.TextWriter results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.IO.TextWriter -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As TextWriter)
參數
- inputUri
- String
輸入文件的 URI。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- TextWriter
您要輸出的目標 TextWriter。
例外狀況
inputUri
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
找不到 inputUri
值所包含的檔案名稱或目錄。
inputUri
不是有效的 URI。
載入輸入文件時,發生剖析錯誤。
範例
下列範例會執行 XSLT 轉換並輸出字串。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("HTML_out.xsl");
// Transform the file and output an HTML string.
string HTMLoutput;
StringWriter writer = new StringWriter();
xslt.Transform("books.xml", null, writer);
HTMLoutput = writer.ToString();
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("HTML_out.xsl")
' Transform the file and output an HTML string.
Dim HTMLoutput As String
Dim writer As New StringWriter()
xslt.Transform("books.xml", Nothing, writer)
HTMLoutput = writer.ToString()
writer.Close()
備註
這個方法會使用不含使用者認證的預設值 XmlUrlResolver 來解析輸入檔,以及樣式表單中找到的任何 XSLT document()
函式實例。 如果其中任何資源都位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
XmlReader具有預設設定的 會用來載入輸入檔。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Transform 方法。
另請參閱
適用於
Transform(String, XsltArgumentList, Stream)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 URI 所指定的輸入文件執行轉換,並將結果輸出至資料流。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::IO::Stream ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.IO.Stream results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.IO.Stream results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.IO.Stream -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As Stream)
參數
- inputUri
- String
輸入文件的 URI。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- Stream
要輸出至的資料流。
例外狀況
inputUri
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
找不到 inputUri
值所包含的檔案名稱或目錄。
inputUri
不是有效的 URI。
載入輸入文件時,發生剖析錯誤。
備註
這個方法會使用預設值 XmlUrlResolver ,而不使用任何使用者認證來解析輸入檔,以及樣式表單中找到的任何 XSLT document()
函式實例。 如果其中任一資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
XmlReader具有預設設定的 會用來載入輸入檔。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Transform 方法。
另請參閱
適用於
Transform(IXPathNavigable, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 IXPathNavigable 物件所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。
public:
void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.XmlWriter -> unit
Public Sub Transform (input As IXPathNavigable, results As XmlWriter)
參數
- input
- IXPathNavigable
實作 IXPathNavigable 介面的物件。 在 Microsoft .NET Framework 中,這可以是 XmlNode (一般為 XmlDocument),或是包含要轉換的資料的 XPathDocument。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的物件 OutputSettings 來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
範例
下列範例會執行 XSLT 轉換,並輸出至 XmlWriter 物件。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);
// Execute the transformation.
xslt.Transform(new XPathDocument("books.xml"), writer);
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
' Execute the transformation.
xslt.Transform(New XPathDocument("books.xml"), writer)
writer.Close()
備註
如果已啟用 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
這個方法不支援 xsl:strip-space
專案。 如果您的編譯樣式表單包含 xsl:strip-space
專案,您必須使用接受 Transform 做為輸入引數的多載 XmlReader 。
IXPathNavigable 介面是在 XmlNode 及 XPathDocument 類別中實作的。 這些類別代表 XML 資料的記憶體中快取。
XmlNode 類別是以 W3C 文件物件模型 (DOM) 為基礎,並包含編輯功能。
XPathDocument 類別是以 XPath 資料模型為基礎的唯讀資料存放區。 XPathDocument 是建議用於 XSLT 處理的類別。 與 XmlNode 類別相比,它可提供更高的效能。
轉換是指套用到整個文件。 換言之,如果您要傳入的節點不是文件的根節點,則不會阻止轉換程序取得已載入文件中的所有節點。 若要轉換節點片段,您必須建立只包含節點片段的物件,並將該物件傳遞至 Transform 方法。 如需詳細資訊,請參閱如何:轉換節點片段。
另請參閱
適用於
Transform(XmlReader, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
public:
void Transform(System::Xml::XmlReader ^ input, System::Xml::XmlWriter ^ results);
public void Transform (System.Xml.XmlReader input, System.Xml.XmlWriter results);
member this.Transform : System.Xml.XmlReader * System.Xml.XmlWriter -> unit
Public Sub Transform (input As XmlReader, results As XmlWriter)
參數
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的物件 OutputSettings 來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
範例
下列範例會轉換books.xml檔案中的第一個書籍。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);
XmlReader reader = XmlReader.Create("books.xml");
reader.MoveToContent();
// Execute the transformation.
xslt.Transform(reader, writer);
writer.Close();
reader.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
Dim reader As XmlReader = XmlReader.Create("books.xml")
reader.MoveToContent()
' Execute the transformation.
xslt.Transform(reader, writer)
writer.Close()
reader.Close()
備註
如果已啟用 XSLT document()
函式,則會使用 XmlUrlResolver 沒有使用者認證的 來解析。 如果外部資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
另請參閱
適用於
Transform(String, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 URI 所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。
public:
void Transform(System::String ^ inputUri, System::Xml::XmlWriter ^ results);
public void Transform (string inputUri, System.Xml.XmlWriter results);
member this.Transform : string * System.Xml.XmlWriter -> unit
Public Sub Transform (inputUri As String, results As XmlWriter)
參數
- inputUri
- String
輸入文件的 URI。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的物件 OutputSettings 來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
inputUri
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
找不到 inputUri
值所包含的檔案名稱或目錄。
inputUri
不是有效的 URI。
載入輸入文件時,發生剖析錯誤。
範例
下列範例會執行 XSLT 轉換,並輸出至 XmlWriter 物件。
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("output.xsl");
// Create the writer.
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = "\t";
XmlWriter writer = XmlWriter.Create("output.xml", settings);
// Execute the transformation.
xslt.Transform("books.xml", writer);
writer.Close();
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("output.xsl")
' Create the writer.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = vbTab
Dim writer As XmlWriter = XmlWriter.Create("output.xml", settings)
' Execute the transformation.
xslt.Transform("books.xml", writer)
writer.Close()
備註
這個方法會使用預設值 XmlUrlResolver ,而不使用任何使用者認證來解析輸入檔,以及樣式表單中找到的任何 XSLT document()
函式實例。 如果其中任一資源位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
XmlReader具有預設設定的 會用來載入輸入檔。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Transform 方法。
這個方法不支援 xsl:strip-space
專案。 如果您的編譯樣式表單包含 xsl:strip-space
專案,您必須使用接受 Transform 做為輸入引數的多載 XmlReader 。
另請參閱
適用於
Transform(XmlReader, XsltArgumentList, XmlWriter, XmlResolver)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 XmlReader 物件所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。 提供 XsltArgumentList 額外的執行時間引數,而 XmlResolver 會解析 XSLT document()
函式。
public:
void Transform(System::Xml::XmlReader ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results, System::Xml::XmlResolver ^ documentResolver);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver? documentResolver);
public void Transform (System.Xml.XmlReader input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver documentResolver);
member this.Transform : System.Xml.XmlReader * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As XmlReader, arguments As XsltArgumentList, results As XmlWriter, documentResolver As XmlResolver)
參數
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的物件 OutputSettings 來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
- documentResolver
- XmlResolver
XmlResolver,用於解析 XSLT document()
函式。 如果值為 null
,則不會解析 document()
函式。
例外狀況
input
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
範例
下列範例會使用 XmlSecureResolver 來解析 XSLT document()
函式。
// Create a resolver and specify the necessary credentials.
XmlSecureResolver resolver = new XmlSecureResolver(new XmlUrlResolver(), "http://serverName/data/");
System.Net.NetworkCredential myCred;
myCred = new System.Net.NetworkCredential(UserName,SecurelyStoredPassword,Domain);
resolver.Credentials = myCred;
XsltSettings settings = new XsltSettings();
settings.EnableDocumentFunction = true;
// Load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("http://serverName/data/xsl/sort.xsl", settings, resolver);
// Transform the file.
using (XmlReader reader = XmlReader.Create("books.xml"))
{
using (XmlWriter writer = XmlWriter.Create("output.xml"))
{
xslt.Transform(reader, null, writer, resolver);
}
}
' Create a resolver and specify the necessary credentials.
Dim resolver As New XmlSecureResolver(New XmlUrlResolver(), "http://serverName/data/")
Dim myCred As System.Net.NetworkCredential
myCred = New System.Net.NetworkCredential(UserName, SecurelyStoredPassword, Domain)
resolver.Credentials = myCred
Dim settings As New XsltSettings()
settings.EnableDocumentFunction = True
' Load the style sheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("http://serverName/data/xsl/sort.xsl", settings, resolver)
' Transform the file.
Using reader As XmlReader = XmlReader.Create("books.xml")
Using writer As XmlWriter = XmlWriter.Create("output.xml")
xslt.Transform(reader, Nothing, writer, resolver)
End Using
End Using
另請參閱
適用於
Transform(String, XsltArgumentList, XmlWriter)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 URI 所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。 XsltArgumentList 會提供額外的執行階段引數。
public:
void Transform(System::String ^ inputUri, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results);
public void Transform (string inputUri, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results);
member this.Transform : string * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter -> unit
Public Sub Transform (inputUri As String, arguments As XsltArgumentList, results As XmlWriter)
參數
- inputUri
- String
輸入文件的 URI。
- arguments
- XsltArgumentList
XsltArgumentList,包含用來當做轉換輸入之符合命名空間的引數。 這個值可以是 null
。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表單包含專案 xsl:output
,您應該使用 XmlWriterSettings 從 屬性傳回的 OutputSettings 物件來建立 XmlWriter 。 如此可確保 XmlWriter 具有正確的輸出設定。
例外狀況
inputUri
或 results
的值為 null
。
執行 XSLT 轉換時發生錯誤。
找不到 inputtUri
值所包含的檔案名稱或目錄。
inputUri
不是有效的 URI。
載入輸入文件時,發生剖析錯誤。
範例
下列範例會使用 XsltArgumentList 物件來建立代表目前日期和時間的參數。
using System;
using System.IO;
using System.Xml;
using System.Xml.Xsl;
public class Sample
{
public static void Main()
{
// Create the XslCompiledTransform and load the stylesheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("order.xsl");
// Create the XsltArgumentList.
XsltArgumentList xslArg = new XsltArgumentList();
// Create a parameter which represents the current date and time.
DateTime d = DateTime.Now;
xslArg.AddParam("date", "", d.ToString());
// Transform the file.
using (XmlWriter w = XmlWriter.Create("output.xml"))
{
xslt.Transform("order.xml", xslArg, w);
}
}
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Public Class Sample
Public Shared Sub Main()
' Create the XslCompiledTransform and load the stylesheet.
Dim xslt As New XslCompiledTransform()
xslt.Load("order.xsl")
' Create the XsltArgumentList.
Dim xslArg As New XsltArgumentList()
' Create a parameter which represents the current date and time.
Dim d As DateTime = DateTime.Now
xslArg.AddParam("date", "", d.ToString())
Using w As XmlWriter = XmlWriter.Create("output.xml")
' Transform the file.
xslt.Transform("order.xml", xslArg, w)
End Using
End Sub
End Class
此範例會使用下列兩個資料檔案做為輸入。
order.xml
<!--Represents a customer order-->
<order>
<book ISBN='10-861003-324'>
<title>The Handmaid's Tale</title>
<price>19.95</price>
</book>
<cd ISBN='2-3631-4'>
<title>Americana</title>
<price>16.95</price>
</cd>
</order>
order.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="date"/>
<xsl:template match="/">
<order>
<date><xsl:value-of select="$date"/></date>
<total><xsl:value-of select="sum(//price)"/></total>
</order>
</xsl:template>
</xsl:stylesheet>
備註
這個方法會使用不含使用者認證的預設值 XmlUrlResolver 來解析輸入檔,以及樣式表單中找到的任何 XSLT document()
函式實例。 如果其中任何資源都位於需要驗證的網路資源上,請使用採用 XmlResolver 作為其中一個引數的多載,並使用必要的認證來指定 XmlResolver 。
XmlReader具有預設設定的 會用來載入輸入檔。 DTD 處理在 上 XmlReader 已停用。 如果您需要 DTD 處理,請建立 XmlReader 已啟用此功能的 ,並將它傳遞至 Transform 方法。
另請參閱
適用於
Transform(IXPathNavigable, XsltArgumentList, XmlWriter, XmlResolver)
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
- Source:
- XslCompiledTransform.cs
使用 IXPathNavigable 物件所指定的輸入文件執行轉換,並將結果輸出至 XmlWriter。 XsltArgumentList 會提供額外的執行階段引數,且 XmlResolver 會解析 XSLT document()
函式。
public:
void Transform(System::Xml::XPath::IXPathNavigable ^ input, System::Xml::Xsl::XsltArgumentList ^ arguments, System::Xml::XmlWriter ^ results, System::Xml::XmlResolver ^ documentResolver);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList? arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver? documentResolver);
public void Transform (System.Xml.XPath.IXPathNavigable input, System.Xml.Xsl.XsltArgumentList arguments, System.Xml.XmlWriter results, System.Xml.XmlResolver documentResolver);
member this.Transform : System.Xml.XPath.IXPathNavigable * System.Xml.Xsl.XsltArgumentList * System.Xml.XmlWriter * System.Xml.XmlResolver -> unit
Public Sub Transform (input As IXPathNavigable, arguments As XsltArgumentList, results As XmlWriter, documentResolver As XmlResolver)
參數
- input
- IXPathNavigable
IXPathNavigable 物件指定要轉換的文件。
- arguments
- XsltArgumentList
做為 XsltArgumentList 的引數清單。
- results
- XmlWriter
您要輸出的目標 XmlWriter。
如果樣式表包含 xsl:output
項目,您應該使用從 OutputSettings 屬性傳回的 XmlWriterSettings 物件建立 XmlWriter。 如此可確保 XmlWriter 具有正確的輸出設定。
- documentResolver
- XmlResolver
XmlResolver,用於解析 XSLT document()
函式。 如果值為 null
,則不會解析 document()
函式。
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應