VBScript TransformNode 方法
最后修改于 2025 年 4 月 9 日
VBScript 中的 TransformNode 方法用于使用 XSLT 样式表转换 XML 文档。它将 XSL 转换应用于 XML 节点,并将结果作为字符串返回。此方法是 Microsoft XML DOM 实现的一部分。它对于 VBScript 中的 XML 处理至关重要。
TransformNode 支持强大的 XML 数据操作和呈现。它通常用于将 XML 转换为 HTML 或其他格式。本教程通过实际示例涵盖 TransformNode,以演示其在各种场景中的用法。
TransformNode 方法概述
TransformNode 方法以 XSLT 样式表作为输入并返回转换后的输出。它作用于 XML DOM 节点,根据 XSL 规则转换它们。该方法可通过 MSXML DOM 对象访问。
主要功能包括 XML 到 HTML 的转换和数据重构。它需要格式正确的 XML 和 XSLT 文档。TransformNode 是同步的,并立即返回结果。理解此方法有助于创建动态 XML 处理脚本。
基本 XML 到 HTML 转换
此示例演示了 TransformNode 将 XML 转换为 HTML 的最简单用法。它展示了加载 XML 和 XSLT 文档。转换将生成 HTML 输出自 XML 数据。
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xslDoc.async = False
xmlDoc.load("data.xml")
xslDoc.load("transform.xsl")
result = xmlDoc.transformNode(xslDoc)
WScript.Echo result
Set xmlDoc = Nothing
Set xslDoc = Nothing
该脚本创建 XML 和 XSLT DOM 文档。它从“data.xml”加载 XML 数据,从“transform.xsl”加载 XSLT。TransformNode 应用转换。结果包含由 XML 源生成的 HTML。
转换特定的 XML 节点
TransformNode 可以转换特定节点,而不是整个文档。此示例显示在转换前选择节点。它演示了对文档子集的定向转换。
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xslDoc.async = False
xmlDoc.load("catalog.xml")
xslDoc.load("product.xsl")
Set productNode = xmlDoc.selectSingleNode("//product[@id='101']")
result = productNode.transformNode(xslDoc)
WScript.Echo result
Set xmlDoc = Nothing
Set xslDoc = Nothing
该脚本加载 XML catalog 和 XSLT 样式表。它使用 XPath 选择一个特定的产品节点。TransformNode 仅转换此节点。此方法对于处理文档片段很有用。
参数化 XSLT 转换
此示例展示了将参数传递给 XSLT 转换。参数允许对转换过程进行动态控制。该脚本演示了在调用 TransformNode 之前设置 XSLT 参数。
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
Set template = CreateObject("MSXML2.XSLTemplate")
xmlDoc.async = False
xslDoc.async = False
xmlDoc.load("data.xml")
xslDoc.load("param_transform.xsl")
Set processor = template.createProcessor()
processor.input = xmlDoc
processor.addParameter "sortOrder", "descending"
processor.addParameter "maxItems", 5
processor.transform
result = processor.output
WScript.Echo result
Set xmlDoc = Nothing
Set xslDoc = Nothing
Set template = Nothing
该脚本使用 XSLTemplate 进行参数化转换。它设置了两个参数:sortOrder 和 maxItems。处理器将它们应用于转换。此技术支持灵活的、运行时可配置的转换。
转换中的错误处理
此示例演示了 XML 转换过程中的正确错误处理。它展示了检查文档加载状态和捕获转换错误。健壮的错误处理对于生产脚本至关重要。
On Error Resume Next
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xslDoc.async = False
If Not xmlDoc.load("data.xml") Then
WScript.Echo "XML Error: " & xmlDoc.parseError.reason
WScript.Quit 1
End If
If Not xslDoc.load("transform.xsl") Then
WScript.Echo "XSL Error: " & xslDoc.parseError.reason
WScript.Quit 1
End If
result = xmlDoc.transformNode(xslDoc)
If Err.Number <> 0 Then
WScript.Echo "Transformation Error: " & Err.Description
Else
WScript.Echo result
End If
Set xmlDoc = Nothing
Set xslDoc = Nothing
该脚本使用 parseError 检查加载错误。它使用 VBScript 的错误处理来处理转换错误。此方法可确保在出现问题时出现正常的失败。正确的错误处理可使脚本更可靠。
将 XML 转换为纯文本
TransformNode 可以生成纯文本输出,而不仅仅是 HTML。此示例展示了将 XML 数据转换为 CSV 格式。XSLT 样式表从 XML 输入生成逗号分隔值。
Set xmlDoc = CreateObject("MSXML2.DOMDocument")
Set xslDoc = CreateObject("MSXML2.DOMDocument")
xmlDoc.async = False
xslDoc.async = False
xmlDoc.load("employees.xml")
xslDoc.load("csv_transform.xsl")
result = xmlDoc.transformNode(xslDoc)
WScript.Echo result
Set xmlDoc = Nothing
Set xslDoc = Nothing
该脚本以 XML 格式加载员工数据。XSLT 样式表将其转换为 CSV 输出。TransformNode 应用基于文本的转换。此技术对于数据导出场景很有用。
来源
在本文中,我们探讨了 VBScript 中的 TransformNode 方法,涵盖了它的用法和实际应用。从基本的 XML 到 HTML 转换到参数化转换,这些示例展示了该方法的通用性。通过这些知识,您可以在 VBScript 应用程序中实现健壮的 XML 处理。