问题标签 [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 投票
2 回答
1041 浏览

c# - XslCompiledTransform:如何读取转换后的文本,而不保存到文件

输入:我的输入文件是 XML 文件。它们由 SSIS 中的 foreach 文件枚举器读取。

过程:SSIS 脚本组件 (C#) 从变量中读取文件名。我创建了一个 XSL 文件,用于将 XML 转换为必要的格式。脚本任务使用 XSL 文件,并将 XML 文件转换为文本

这是我使用的一段代码:

问题:

正如预期的那样,这会将转换后的文本内容写入上述输出文件。我想通读每一行,处理它,然后加载到数据库。

现在,写入文件,再次读取它是一种开销。

有没有办法可以将转换后的内容读入任何对象并对其进行迭代(而不实际写入文件)?像流什么的?

或者:

尽管SSIS“XML 任务”具有“操作类型 = XSLT”功能,但如果“SourceType”是变量并且我在变量中给出带有路径的文件名,则它不会读取 XML。它期望变量中的 XML 内容。任何可能的解决方法?

请在评论中询问具体细节,以便我进行相应更新。谢谢你。

如图所示,我无法编辑 XML 任务的表达式在此处输入图像描述

0 投票
0 回答
232 浏览

c# - OpenXML 2.5 XSL 转换 Word 2013 C# 的问题

谁能帮我解决这个问题?我之前没有对 OpenXML 做过任何事情,这让我很困惑!

我有一个 Word 文档,它是一张发票。在本文档中,我有常用的标题等,以及需要使用来自 SQLServer 的 XML 数据集的数据填充的“字段”。

我从 docx 中获取了 word/document.xml 的副本,并对文件进行了建议的更改,以将其转换为 XSLT 文件。

变成

并且文件以

然后,我更改了一些“字段”以显示我想要合并数据的位置。

一切安好……

当我运行它时,我得到了一个看起来不错但无法在 Word 2013 中打开的新文件。我将 document.xml 从 docx 中拉出并尝试打开它。这给了我一个未指定的错误行 1 列 1257。

从那以后,我尝试了各种各样的事情,包括创建一个没有合并字段的 XSLT,只设置了页眉和页脚,我得到了同样的结果。

我已经尝试了几个不同复杂性的不同标题,并且总是得到相同的错误。

当我跟踪错误时,它在这个标记行中

以第 1257 列结束:

mc:Ignorable="w14 w15 wp14">

我检查了命名空间是否都已声明,但我看不到或理解出了什么问题

有任何想法吗?谢谢

0 投票
2 回答
703 浏览

c# - C# Parallel.ForEach XslCompiledTransform 与 Saxon 9.7.0.6 HE

由于 XPath 2.0/XSLT 2.0,我想将我的 XslCompiledTransform 迁移到 Saxon 9.7.0.6 HE,但它比 .NET 慢得多。

我使用默认副本 ident XSLT 和 15.000 个 xml 文件测试了每个版本:

我希望我做错了什么,XslCompiledTransform:

撒克逊版本:

更新

我在没有 Visual Studio 调试的情况下进行了另一项测试,结果好多了:

所以主要的减速是调试器本身,但仅限于撒克逊人。现在它只需要 .NET 版本的两倍时间,它不是超级棒,但我想我可以接受。

我能做些什么来让撒克逊人更快吗?也许玩代码或使用EE而不是HE?

这里有一些详细的基准信息,主要的性能问题是 DocumentBuilder.Build 方法。但即使是转换本身也比 .NET 版本慢两倍多:

撒克逊人:

撒克逊人

。网:

。网

0 投票
1 回答
547 浏览

c# - 如何让 XslCompiledTransform 在根元素中包含 xmlns?

我正在尝试使用 XslCompiledTransform C# 类将一个 xml 文件转换为另一个。但是,不会传输 xmlns 属性。

我的代码:

XSLT:

输入:

这是实际的输出:

这是所需的输出:

0 投票
1 回答
68 浏览

c# - 替换元素的值时,XmlCompiledTransform 重复命名空间

我正在尝试使用 XslCompiledTransform C# 类将一个 xml 文件转换为另一个。但是,命名空间第二次包含在我的一个元素(SerialNum)中。我究竟做错了什么?

这是我的 C# 代码:

这是我的 XSL:

输入:

输出:

期望的输出:

0 投票
0 回答
169 浏览

c# - 从 XSLT 样式表“返回”值

我正在使用XSLTCompiledTransform如下所示的对象将 XML 报告转换为 html 报告。我正在使用XsltArgumentList将值从 C# 代码传递到 XSLT,但我还需要将值从 XSLT 表“返回”到 C# 代码。

我还没有找到任何记录可以做到这一点的方法。我可以 使用 LINQ 直接从DataTable编写 XML 的地方获取我需要的值,但我更愿意从 XSL 中提取它们。这将是更少的代码,我将避免在两个不同的地方计算相同的值。

0 投票
2 回答
1753 浏览

c# - 将命名空间添加到根元素

我正在编写一个 XSLT 转换,我希望在根元素上定义所有命名空间前缀。默认情况下,MS 似乎会在 XML 层次结构中的第一个元素上创建一个新的前缀定义以使用该模式。这意味着如果这些元素与同一模式的共享祖先不相关,则可以在多个元素上引用相同的模式。

通过像这样对根元素进行编码,所有工作都按预期工作:

但是我找不到任何方法来使用xsl:element; 例如

xls:element是否可以针对除该元素本身之外的模式声明命名空间前缀?


完整示例

XML

XSLT

结果

期望的结果

或者

0 投票
1 回答
399 浏览

c# - XslCompiledTransform 加载方法抛出“拒绝访问异常”

我有一个在 .Net 4.6 下运行的 WinForms 应用程序 (x64)。我正在XslCompiledTransform使用 XSLT 文件来操作一些 XML 文件。
XSLT 转换对许多 XML 文件并行完成,如下所示:

正如我从 MSDN 中了解到的,Load 方法会在文件夹下创建临时文件%TEMP%(如果在对象上启用了脚本XslCompiledTransform),一旦对方法的调用完成,这些文件就会被删除Load
我的问题是,即使在锁定Load方法时,我也会遇到以下异常:

拒绝访问路径“C:\Users\erezk\AppData\Local\Temp\iapqiwqu.tmp”。

该文件Load是生成调用的临时文件之一。

有没有人遇到过这个?

0 投票
1 回答
36 浏览

c# - 在 XslCompiledTransform 中选择对 XSLT 文件的更改

我有一个 XSLT 文件,我对它做了一些小的修改。

XSLT 中的更改似乎在编译时没有被采纳。

不确定这应该如何工作..您是否需要在此函数中编写其他内容才能获取新的更改?

0 投票
1 回答
705 浏览

xml - vb.net 应用程序将 xml 转换为文本

在创建控制台应用程序以从文件夹中读取 xml 文件并将它们转换为文本文件并使用 xsl 文件将它们保存在单独的文件夹中进行转换时需要帮助。

我尝试了多种选择,但没有任何效果。以下是我目前拥有的。

解决此问题的任何帮助都会有所帮助。