Ale*_*ian 11 c# xslt debugging visual-studio extension-objects
我目前正在开发一个涉及大量XSLT转换的项目,我真的需要一个调试器(我有1000多行的XSLT ,我没有写它们:-).
该项目是用C#编写的,并使用扩展对象:
xslArg.AddExtensionObject("urn:<obj>", new <Obj>());
Run Code Online (Sandbox Code Playgroud)
据我所知,在这种情况下,Visual Studio是唯一可以帮助我逐步调试转换的工具.由于扩展对象,静态调试器没有用处(当它到达引用其命名空间的元素时会抛出错误).幸运的是,我发现这个线程给了我一个起点(至少我知道它可以完成).
在搜索MSDN之后,我找到了可以进入转换的标准.它们列在这里.简而言之:
IXmlLineInfo接口(XmlReader&co.)的类加载XML和XSLTXSLTCompiledTransform构造函数中使用的XML解析器是基于文件的(XmlUriResolver应该可以工作).据我所知,我符合所有这些标准,但它仍然无效.相关代码示例发布如下:
// [...]
xslTransform = new XslCompiledTransform(true);
xslTransform.Load(XmlReader.Create(new StringReader(contents)), null, new BaseUriXmlResolver(xslLocalPath));
// [...]
// I already had the xml loaded in an xmlDocument
// so I have to convert to an XmlReader
XmlTextReader r = new XmlTextReader(new StringReader(xmlDoc.OuterXml));
XsltArgumentList xslArg = new XsltArgumentList();
xslArg.AddExtensionObject("urn:[...]", new [...]());
xslTransform.Transform(r, xslArg, context.Response.Output);
Run Code Online (Sandbox Code Playgroud)
我真的不明白我做错了什么.我检查了两个XmlReader对象上的接口,然后实现了所需的接口.此外,BaseUriXmlResolver继承自XmlUriResolver,样式表存储在本地.下面的截图是我在进入该Transform功能时获得的.首先,我可以在单步参数(模板匹配)后看到样式表代码,我得到:
我走进样式表时遇到的错误http://img339.imageshack.us/img339/4153/scrxslterror.jpg
如果有人知道为什么它不起作用或有另一种方式让它工作,我会非常有责任:).
谢谢,
亚历克斯
我不确定扩展对象的使用情况,但据我了解,您的问题是在 VS2010 中调试代码中的 XSLT 转换。这是我们用来调试 XSLT 转换的函数:
public string ApplyTransformation(string inputFilePath, string xsltFileContent)
{
XslCompiledTransform transform = new XslCompiledTransform(debugEnabled);
File.WriteAllText(xsltTempFilePath,xsltFileContent);
transform.Load(xsltTempFilePath, XsltSettings.TrustedXslt, new XmlUrlResolver());
XmlReader reader = XmlReader.Create(inputFilePath);
StringWriter output = new StringWriter();
XmlWriter writer = XmlWriter.Create(output,transform.OutputSettings);
transform.Transform(reader,writer);
return output.ToString();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,VS2010 XSLT 调试器存在一个错误,这将使您的调试体验比 VS2008 更差。
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |