XslCompiledTransform 类的输入

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

注意

默认情况下,XslCompiledTransform 类保留空白。 这符合 W3C XSLT 1.0 第 3.4 节的建议

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.
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);
' 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)

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
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);
'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)

字符串 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.
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");
' 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")

有关详细信息,请参阅在 XSLT 处理期间解析外部资源

请参阅