XslCompiledTransform 类的输入

Transform 方法接受三种输入类型的源文档:实现 IXPathNavigable 接口的对象、读取源文档的 XmlReader 对象或字符串 URI。

注意注意

默认情况下,XslCompiledTransform 类保留空白。这符合 W3C XSLT 1.0 建议的第 3.4 节(第 3.4 节,http://www.w3.org/TR/xslt.html#strip)。

IXPathNavigable 接口

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

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

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

注意注意

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

下面的示例使用 XslCompiledTransform.Transform 方法,借助 transform.xsl 样式表将 books.xml 文件转换为 books.html 文件。 books.xml 和 transform.xsl 文件可在以下主题中找到:如何:通过使用程序集执行 XSLT 转换

' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)
// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);

XmlReader 对象

Transform 方法从 XmlReader 的当前节点及其所有子节点加载。 这样,可以使用文档的一部分作为上下文文档使用。 Transform 方法返回后,XmlReader 将位于上下文文档结尾之后的下一个节点上。 如果已到达文档结尾,XmlReader 将位于文件结尾 (EOF)。

下面的示例使用 XslCompiledTransform.Transform 方法,借助 transform.xsl 样式表将 books.xml 文件转换为 books.html 文件。 books.xml 和 transform.xsl 文件可在以下主题中找到:如何:通过使用程序集执行 XSLT 转换

'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)
// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);

字符串 URI

还可以将源文档 URI 指定为 XSLT 输入。 XmlResolver 用于解析 URI。 可以指定要使用的 XmlResolver,方法是将其传递给 Transform 方法。 如果未指定 XmlResolverTransform 方法将使用没有凭据的默认 XmlUrlResolver

下面的示例使用 XslCompiledTransform.Transform 方法,借助 transform.xsl 样式表将 books.xml 文件转换为 books.html 文件。 books.xml 和 transform.xsl 文件可在以下主题中找到:如何:通过使用程序集执行 XSLT 转换

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")
// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");

有关更多信息,请参见在 XSLT 处理期间解析外部资源

请参见

其他资源

XSLT 转换