XslCompiledTransform 类的输入

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

注释

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

IXPathNavigable 接口

接口IXPathNavigableXmlNode类和XPathDocument类中实现。 这些类表示 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 方法。 如果未指定XmlResolver,则Transform方法会使用没有凭据的默认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 处理期间解析外部资源

另请参阅