我有一些在其中包含 VBScript 的旧版 XSLT 脚本。它们在旧系统上运行,我无法更改该系统。
我现在需要对 XSLT 进行更改以以不同方式转换文件。
我构建了一个简单的 .NET 项目来测试我的 XSLT 转换:
[STAThread]
public static void Main(string[] args)
{
var transform = new XslCompiledTransform(true);
//foreach (var file in System.Reflection.Assembly
// .GetExecutingAssembly().GetManifestResourceNames()
// )
//{
// Console.WriteLine(file);
//}
//Console.ReadKey();
transform.Load(XmlTextReaderFromEmbeddedResource("MyXSLTFile"),
new XsltSettings() { EnableDocumentFunction = true, EnableScript = true }, new XmlUrlResolver());
transform.Transform(
XmlTextReaderFromEmbeddedResource("MySourceXML"),
ToXmlTextWriter("MyOutput.xml"));
}
private static XmlTextReader XmlTextReaderFromEmbeddedResource(string resourceName)
{
var resource = typeof(Transform)
.Assembly.GetManifestResourceStream
(resourceName);
return new XmlTextReader(resource);
}
private static XmlTextWriter ToXmlTextWriter(string fileName)
{
return new XmlTextWriter(fileName, Encoding.UTF8);
}
这在程序上有效。但是,XSLT 中的脚本(即 VBScript)不能很好地与 .NET 配合使用。具体来说,我有一个部分:
dim gRegEx
set gRegEx = New RegExp
它将变换轰炸为:
Type 'RegExp' is not defined.
有很多关于如何将其转换为 .NET 对象的文章,但这需要回到需要 VBScript 的旧机器上。
我该如何编写它以便它可以在两种环境中工作?