问题标签 [xslcompiledtransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
155279 浏览

c# - 如何防止和/或处理 StackOverflowException?

我想阻止或处理StackOverflowException我从正在编写的XslCompiledTransform.Transform方法调用中得到的。Xsl Editor问题似乎是用户可以编写一个Xsl script无限递归的,它只是在调用该Transform方法时崩溃了。(也就是说,问题不仅仅是典型的程序错误,这通常是导致此类异常的原因。)

有没有办法检测和/或限制允许的递归次数?或者有什么其他想法可以防止这段代码对我产生影响?

0 投票
5 回答
3986 浏览

c# - XslCompiledTransform.Load() 引发 System.IO.FileNotFoundException

我的 webapp (ASP.NET 2.0) 在同一台机器上使用 webservice (asmx on 1.1 framework)。在获得 XML 作为回报后,我将它传递 XslCompiledTransform给将 XML 转换为 HTML,它工作正常。

昨天我System.IO.FileNotFoundException经常遇到这种问题,不知道是什么原因造成的。

首先看看我认为这是关于 c:\windows\temp 的读/写权限,然后我确保给它完全的网络服务权限(最后也是每个人-_-!)但它没有帮助。

任何想法或解决方案将不胜感激。

0 投票
1 回答
891 浏览

iis - StackOverflowException 加载 XsltCompiledTransform

加载 XslCompiledTransform 时,我有一些大的 xslt 崩溃 iis (StackOverflowException),而旧的(不推荐使用的)XslTransform 工作正常。大模板是否存在一些已知问题?奇怪的是,相同的 XslCompiledTransform 在 win32 应用程序中成功加载。

0 投票
4 回答
2657 浏览

c# - XslCompiledTransform 与 XslTransform 以及如何更好地衡量 OOM?

所以有一段时间我一直在使用 XslCompiledTransform,因为这是微软告诉我需要使用的,因为 XslTransform 已被弃用。最近我不得不将它与具有近 100,000 行的转换一起使用(当然是生成的 xsl)。当我使用我的应用程序时,我很震惊地看到一个 OOM 弹出。不管我做了什么 - OOM 就是我得到的一切......为了咯咯笑,我回到 XslTransform...... 将 XslCompiledTransform 更改为 XslTransform 的完全相同的代码,它工作正常......

谁能告诉我如何解决 OOM - XslCompiledTransform 上是否有一些“swtich”?我不知道您将如何复制确切的问题,但如果有人有任何答案,他们将不胜感激。

谢谢 - 下面的代码:

作品:

OOM 失败

0 投票
2 回答
3462 浏览

c# - C# 中的 XslCompiledTransform 调试

我已经尝试了又尝试了,但我无法设法进入 XslCompiledTransform 而不必从磁盘加载样式表(通过将 URI 传递到 XslCompiledTransform.Load() 方法)。

我完全知道,如果您通过 URI(如前所述)从磁盘加载样式表或从实现 IXmlLineInfo 接口的 XmlReader 加载样式表,则只能进入 XslCompiledTransform.Transform() 方法。

我已按如下方式加载样式表:

从我读过的各种文献来看,这似乎是启用调试的方式。但是,当我尝试进入 XslCompiledTransform.Transform() 方法时,我收到消息:“当前位置没有可用的源代码”

如前所述,如果我执行以下操作,我可以进入转型:

上述方法是不可能的,因为我不希望不断地从磁盘读取数据。


感谢您的有用评论,我没有意识到微软已经这样做了,我相信这在将来会非常有帮助。

但是,我想我的问题并没有完全清楚。我没有考虑进入加载方法,我想进入转换方法,以便我可以看到 xsl 转换发生了什么。我强调了加载方法,因为您传入的参数指示您是否能够调试转换方法(您必须传入实现 IXmlLineInfo 接口的 XmlReader 才能这样做)。

虽然我可以使用您突出显示的技术进入转换方法,但我只是单步执行代码。尽管我可以通过观察代码来找出转换的原因,但 xsl 调试器会逐行显示实际样式表本身的单步执行(与执行转换的每一行的代码相反)

0 投票
1 回答
2830 浏览

c# - 设置 XslCompiledTransform 输出设置

我正在编写一些依赖于一个子模块的 XslTransformation 的代码。

由于 XslTransformation 公开了一个名为 Outputsettings 的 XmlWriterSettings 字段,我认为在我的类中公开 XmlWriterSettings 字段也很酷,因此我可以使用我的 IoC 容器通过配置来配置 XmlWriterSettings。

但事实证明,Outputsettings 是一个只读字段,我找不到如何将一个传递给 Transform 的方法(没有 ctor 重载等)。

我是否遗漏了什么,或者是否有一些工厂方法可以使用给定的 XmlWriterSetting 创建 XslCompiledTransform?

问候丹尼尔/蒂格莱尼

0 投票
5 回答
7015 浏览

.net - XslTransform 与 XslCompiledTransform

XslTransform 似乎已被 Microsoft 弃用,取而代之的是 XslCompiledTransform。从理论上讲,如果我在执行应用程序期间只进行一次转换,那么解释 XSLT(通过 XslTransform)不应该比编译它更快吗?如果是这样,XslTransform 是否写得如此糟糕以至于对 XslCompiledTransform 所做的改进足以弥补它?

0 投票
2 回答
2197 浏览

xslt - XslCompiledTransform 的最快内存缓存

我有一组 xslt 样式表文件。我需要产生 XslConpiledTransform 的最快性能,所以我想在内存中表示这些样式表。

我可以在应用程序启动时将它们作为 IXpathNavigable 加载到内存集合中,然后在每个请求上将每个 IXPAthNavigable 加载到单例 XslCompiledTransform 中。但这仅适用于没有 xsl:import 或 xsl:include 的样式集。(Xsl:import 仅适用于文件)。

我也可以为每个模板加载许多 XSLCompiledTransform 实例到缓存中。合理吗?

还有其他方法吗?哪个最好?提高 MS Xslt 处理器性能的其他技巧是什么?

0 投票
12 回答
22120 浏览

.net - XSLT 自闭标签问题

我正在使用 xslt 将 xml 文件转换为 html。.net xslt 引擎不断为我提供空标签的自闭合标签。

例子:

变成

前者是合法的 html,而后者是非法的 html,渲染效果不好。我的问题是:如何告诉 xslt 引擎 (XslCompiledTransform) 不使用自闭合标签。

如果不可能,我如何告诉我的浏览器(在这种情况下为 IE6+)正确解释自闭标签。

0 投票
4 回答
13224 浏览

c# - 如何解决从字符串加载 XSL 的转换中包含的 XSL?

.NET 2.0/VS2005

我正在尝试使用XslCompiledTransform该类来执行 XSL 转换。<xsl:include>我有两个 XSL 文件,其中第一个以语句的形式包含对另一个的引用:

主要.xsl:

现在,如果我可以将“Main.xsl”文件本身作为 URI 加载,我的转换代码将非常简单:

问题是我将 Main.xsl 文件的内容作为字符串接收,需要将该字符串加载为XmlReader/IXpathNavigable. 这是此时的必要限制。当我尝试使用 做同样的事情时XmlReader/XpathDocument,它失败了,因为代码在文件夹中查找“Included.xsl” C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\!显然,XmlResolver它无法解析相对 URL,因为它只接收一个字符串作为输入 XSL。

我在这个方向上的努力如下:

我曾尝试使用ResolveUriXmlUrlResolver 的方法来获取Stream要包含的 XSL 文件的引用,但对如何使用此 Stream 感到困惑。XslCompiledTransformIOW,除了 Main.xsl XmlReader ,我如何告诉对象使用这个流:


任何帮助是极大的赞赏。对不起,很长的帖子!

供您参考,Exception StackTrace 如下所示: