【发布时间】:2012-04-12 15:16:04
【问题描述】:
我有一些在其中包含 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 的旧机器。
我该如何编写它以使其在两种环境中都能正常工作?
【问题讨论】:
标签: c# xslt asp-classic vbscript