问题标签 [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.
xslt - 如何对xslt中的元素(列)进行排序以将xml文件转换为csv格式
上面的 xml 是 SSRS 为 RDL 文件生成的。我想使用 XSLT(自定义格式)将上述 xml 文件转换为 CSV 格式。RDL 文件(SSRS 报告)非常简单,有 50 列,并根据用户界面上的用户选择显示所有列的数据。用户界面有所有 50 列的参数选择(即,他们可以选择列的顺序,他们可以选择是否包含在报告中的特定列,字体样式等...)。如前所述,每列有 2 个主要功能,即它们可以根据选择进行排序和排序。
例如,从上面给出的 xml 格式的报告输出中,您将看到所有 50 列都以 xml 格式存在,但我还包括通常隐藏在报告中的额外字段。
col1 包含在报告中,并作为 csv 文件的第二列排序 (seqID)。col2 也包含在报告中,并作为 csv 文件的第一列排序。col3 不包含在报告中,并且订单选择为空,因此不包含在 csv 文件中。... ... 同样,col50 包含在报告中,但在 csv 文件中作为第 3 列排序。
我在这里的主要挑战是为“CSV”创建 xslt 文件并将列放在按用户选择的顺序选择中。
转换后 CSV 文件中的输出将如下所示:
非常感谢创建这种 xsl 文件的任何好主意,非常感谢您理解我的问题并在这方面为我提供帮助。
xml - 如何使用 XslCompiledTransform 在输出 XML 中获取自闭合标签?
请帮我...
我输入了 XML 文档:
我需要将其转换为下一个 xml:
我创建了下一个样式表:
但是当我尝试对其进行转换时,我得到了下一个结果:
我怎么知道解释自闭标签?
C#转换代码:
extension-methods - 具有可变数量参数的 XSLT 扩展方法
我正在尝试使用可变数量的参数实现 XSLT 扩展函数。如果我将参数声明为数组、params 数组、ICollection 等。我会收到以下错误(其中 TYPE_NAME 是使用的类型):
System.Xml.Xsl.XslTransformException:不支持具有 Clr 类型“TYPE_NAME”的扩展函数参数或返回值。
concat
但是 Umbraco 有一个以这种方式运行的内置函数。我查看了 Umbraco 的源代码,它看起来像这样:
在 XSLT 中它是这样调用的:
当我尝试类似的方法并声明我的函数如下:
并以相同的方式在 XSLT 中调用它:
我收到以下错误:
System.Xml.Xsl.XslTransformException:扩展对象“urn:Custom”不包含具有 3 个参数的匹配“测试”方法。
我猜想 concat 的输入以某种方式在 XPathNodeIterator 中进行了转换,但我无法弄清楚如何。有什么建议么?
c# - 应用 XSLT 时省略 XML 的 doctype 声明
我有包含 doctype 的 XML 文件:
该文件由第 3 方提供,我无法控制它的生成方式。我使用 XSLT 转换 XML,但 XSLT 抱怨找不到 dtd;我如何告诉 XSLT 忽略它,这样它就不会尝试访问我没有的 dtd 文件。
谢谢
c# - XPath / XmlCompiledTransform:使用 XPath 函数测试父级
我不确定我是否真的做错了,或者这是否不能正常工作:
如果当前节点是第一个孩子,或者它的父节点是第一个孩子,那么做一些特别的事情。
问题是“parent::position() = 1”.. 使用.net 的 XmlCompiledTransform 我得到
表达式的预期结尾,发现 '('。...sition() = 1 或父 ::position -->(<-- = 1。
现在,显然它不喜欢第二部分中的那个 position() 函数,但是..我如何获得父母的位置?通常,我如何在测试中将 XPath 函数与 XPath结合起来?
c# - 是否有更有效的方法来转换已经包含对 XSLT 的引用的 XDocument?
我有一个已包含对 XSLT 文件的引用的 XML 文件。
我正在考虑根据引用的转换规则转换这个 XML 文件,以便我可以创建一个漂亮的 PDF 文件。
看来我可以通过 执行实际的转换System.Xml.Xsl.XslCompiledTransform
,但它要求我在执行转换之前手动关联 XSLT。
根据我所看到的,我现在必须手动从 XDocument 中提取 XSLT 引用(下面是粗略的开始):
但是,由于 XML 文件本身已经引用了 XSLT ,我认为我做的工作太多,并且有一种更有效的方法来应用转换。
有吗,或者这是一个人必须做的?
html - 来自 XSLT 的 HTML Web 表单和 POST 用户数据作为 XML
我面临一个问题。我需要构建一个表单提交系统,如下所示 -
- 浏览器从 xslt 文件呈现 Web 表单。
- 用户填写网络表单并单击提交。
- 浏览器为填写好的表单创建一个 xml。
- 浏览器将数据发布到服务器。
任何人都可以帮助我现有的图书馆做到这一点吗?(我尝试了 Altova Stylevison,但有一些缺点)。
asp.net - DocumentXPathNavigator 中的 .Net 空引用异常
我遇到了一个有趣的例外。在我的一台生产服务器上,有时我会遇到以下异常。
打开 IL 并查看每个方法表明 DocumentXPathNavigator => this.document 为空。奇怪的是,我无法在本地或我们的测试服务器上复制这个问题。
一点背景知识,这可能是关键……这是一个 Web 应用程序(运行 .Net 3.5),它缓存传递给 XslCompiledTransform.Transform() 的 XmlDocument。我们的缓存通过分布式缓存服务器提供服务。XmlDocument 被序列化和缓存,因此对特定对象的引用不应继续存在。这使我相信,当隐式 XmlDocument -> DocumentXPathNavigator 发生或在 Transform() 运行时删除某处的某些引用时,要么是某些东西明确阻止了 this.document 被设置。无论哪种方式,我都很困惑。
所以,我想我的问题是:
- 有没有其他人见过这个?
- 有谁知道可能导致它的原因或如何处理它?
谢谢
编辑:
在进一步考虑之后,唯一有意义的是这是一个竞争条件。当应用程序使用对象时,缓存设备以某种方式使对象过期。
编辑/编辑:
.Net 3.5,上面引用的程序集是 2.0
xslt - XSLT 将具有重复兄弟的 xml 转换为平面文件
我有一个如下的xml:
我需要将其转换为平面文件。为此,我编写了以下 xsl
所以,输出应该是
“HDR”;“文本”;“20120112045620”;“F”
“GL”;“PDA”;“全球人物状态”;“术语词汇表”
“GL”;“PDA”;“人物状态”全球”;“全球人员状况全球更新”
“GL”;“PDA”;“全球人员状况”;“术语词汇”
“GL”;“PDA”;“全球人员状况”;“全球人员状况全球更新”
“GL” ;"PDI";"全球人员状态";"术语词汇表"
"GL";"PDI";"全球人员状态";"全球人员状态更新"
"GL";"PDI";"全球人员状态";"术语词汇"
"GL";"PDI";"全球人员状态";"全球人员状态更新"
"GL";"GLB";"人员状态全球";"术语词汇表"
"GL";"GLB";"全局人员状态";"全局人员状态已更新"
“GL”;“GLB”;“全球人员状况”;“术语词汇”
“GL”;“GLB”;“全球人员状况”;“人员状况全球更新”
“FTR”;12
使用我的 xsl,我开始单行:
“GL”;“PDAPDIGLB”;“人物状态全球全球人物状态”;“术语词汇人物状态全球更新”
并且标题行:
“HDR”;“PIGLSSTD”;“20120112045620”;“F”:
应附加在开头,以及页脚行
“FTR”;
在底部。
c# - 我该如何解决和使用 xsltc.exe XslCompiledTransforms 时具有相对路径的元素?
作为我们 Web 应用程序构建过程的一部分,我已经设置了我们的 XSLT 样式表,以便在我们运行完整编译时使用Microsoft 的 xsltc.exe编译器构建。在本地开发期间,这非常有效,因为代码是在同一位置编译和托管的。但是,一旦将其放在构建服务器上,就会出现问题。
构建服务器将像我在本地那样编译 XSLT 样式表,但随后会运行一个脚本,将编译后的代码部署到我们的内部登台 Web 服务器。一旦这些二进制文件从它们的编译位置移出,其中的相对路径<xsl:import>
和<xsl:include>
元素就不再正确解析,从而导致在运行 XSLT 样式表时出现类似这样的异常。
这是现在代码的一般概念:
现在,我使用带有单个“Type”参数的 XslCompiledTransform.Load() 方法来引入基于 xsltc.exe 的预编译 XSLT 样式表。我可以从堆栈跟踪中得知 .NET 框架正在使用 XmlUrlResolver 来尝试解析这些外部样式表的实际位置,但我没有看到提供重写的 XmlResolver 实现的方法,我可以在其中传入一个新的baseUri 指向这些样式表在 Web 服务器上的位置。
我假设我可以通过不再使用 xsltc.exe 预编译并通过 XmlReaders 加载 XSLT 样式表来解决这个问题,因为这将让我使用其他 XslCompiledTransform.Load() 方法,这些方法有一个参数,我可以提供我自己的 XmlResolver 实现. 但是,我喜欢用于语法验证和性能的预编译选项,所以我不想放弃它,除非我绝对必须这样做。
有没有办法使用 xsltc.exe 来预编译这些 XSLT 样式表,但仍然提供一种方法来显式声明 baseUri 以在运行时<xsl:include>
与<xsl:import>
元素的相对路径解析?