我已经尝试了又尝试了,但我无法设法进入 XslCompiledTransform 而不必从磁盘加载样式表(通过将 URI 传递到 XslCompiledTransform.Load() 方法)。
我完全知道,如果您通过 URI(如前所述)从磁盘加载样式表或从实现 IXmlLineInfo 接口的 XmlReader 加载样式表,则只能进入 XslCompiledTransform.Transform() 方法。
我已按如下方式加载样式表:
XslCompiledTransform xslt = new XslCompiledTransform(true);
//grab string from textbox
XmlReader reader = XmlReader.Create(new StringReader(XsltBox.Text));
// Compile the style sheet.
xslt.Load(reader);
从我读过的各种文献来看,这似乎是启用调试的方式。但是,当我尝试进入 XslCompiledTransform.Transform() 方法时,我收到消息:“当前位置没有可用的源代码”
如前所述,如果我执行以下操作,我可以进入转型:
string stylesheet = @"C:\PathToMy\Stylesheet.xsl";
// Enable XSLT debugging.
XslCompiledTransform xslt = new XslCompiledTransform(true);
//compile stylesheet
xslt.Load(stylesheet);
上述方法是不可能的,因为我不希望不断地从磁盘读取数据。
感谢您的有用评论,我没有意识到微软已经这样做了,我相信这在将来会非常有帮助。
但是,我想我的问题并没有完全清楚。我没有考虑进入加载方法,我想进入转换方法,以便我可以看到 xsl 转换发生了什么。我强调了加载方法,因为您传入的参数指示您是否能够调试转换方法(您必须传入实现 IXmlLineInfo 接口的 XmlReader 才能这样做)。
虽然我可以使用您突出显示的技术进入转换方法,但我只是单步执行代码。尽管我可以通过观察代码来找出转换的原因,但 xsl 调试器会逐行显示实际样式表本身的单步执行(与执行转换的每一行的代码相反)