问题标签 [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 - 在 xsl 中动态更改命名空间
解释我想要做什么有点棘手,所以我将使用一个过于简化的例子。
我有三个 Xsl 模板:A.xsl、B.xsl 和 Common.xsl
A.xsl 和 B.xsl 都使用“xsl:include”来包含 Common.xsl。A.xsl 看起来像这样:
B.xls 看起来像这样:
最后,Common.xls 看起来像这样:
因此,A 和 B 看起来不同,它们使用相同的命名空间前缀 (tns),但命名空间具有不同的值。A 和 B 包括 Common.xsl,它也使用 tns 命名空间。
换句话说,我希望Common.xsl 中的tns 命名空间取“调用”的值,即A 或B,xsl 文件。
但是,这在使用 XslCompiledTransform 时不起作用,它在 Common.xsl 中抱怨 tns 是一个未声明的命名空间。如果我在 Common.xsl 中声明 tns 命名空间,我需要使用http://MyNamespaceForA
or 或http://MyNamespaceForB
.
假设我http://MyNamespaceForB
在 Common.xsl 中声明 tns。现在,当我使用 A.xsl 时,tns 命名空间的值会发生冲突。结果是 Common.xsl 生成的 XML 元素将具有显式的命名空间值http://MyNamespaceForB
. 这当然行不通。
希望我有点清楚我想要做什么。简而言之,我想让“调用”xsl 文件指示包含的 xsl 文件中命名空间的值。
有任何想法吗?/弗雷德里克
.net - 通过 NANT 的 Xsl 转换过程不会更新所有请求的 xpath
这对我来说很难解释,但我会尽力而为。添加评论以澄清/补充我可能遗漏的任何内容。
背景资料:
- 执行 msbuild 的 NANT(构建过程)版本 0.85.2478.0
- CruiseControl.NET
- Windows Server 2008 R2 64 位
- .NET 框架 3.5
我正在尝试更新/修改 Web 应用程序的 web.config 中的一些设置。我们使用 NANT 代码运行通过 CruiseControl.NET 执行的构建过程。我们正在通过 XslCompiledTransform 并使用样式表和设置文件来更新配置文件。
以下是“UpdateConfig.xslt”文件的样子:
这是我传递的设置文件的一部分,其中包含一些有效的值,以及一些无效的值:
问题:当我开始构建我们的 Web 应用程序时,它并没有更新我想要/指定的所有配置部分。
我已经用 XmlSpy、Notepad++ 和 XmlQuire 验证了所有的 xpath 表达式,所以我知道 100% 它们是正确的。
我唯一认为不正确的是它在样式表(UpdateConfig.xslt)中,但是这个构建过程不是我编写的,我很难阅读它。
如果有人对出了什么问题或如何更好地调试过程有任何想法,我很想听听他们的意见。
哦,不更新的部分是这个 xpath:
c# - 使用 Altova MapForce 生成的 XSLT 文件时出现 XslCompiledTransform 异常
我正在使用 .NET 的 XslCompiledTransform 来执行 XSLT 转换。当我尝试使用使用 Altova 的 MapForce 工具自动生成的 XSLT 文件时,出现异常:
从 XSL 样式表定义:
...似乎 Altova 为 XSLT 定义了自己的扩展函数,而 XslCompiledTransform 不知道如何找到它们。如何让 XslCompiledTransform 识别那些外部函数?
xml - vb 2010 XslCompiledTransform 需要从字符串转换而不是从 URI 磁盘文件转换
以下代码有效,从本地磁盘获取 XSL 和 XML,并将转换后的 XML 返回到变量 Xtransoutput。
我的问题是我已经将 XML 和 XSL 放在单独的字符串中,它们不在磁盘上,出于安全原因,我不能将它们写入磁盘。关于如何让这些从字符串而不是磁盘文件工作的任何建议?
蒂亚!
c# - 要在 HTML 控件中显示的 XML 元素中的空格
我正在使用 C# 3.5。我有一个传递给 XslCompiledTransform 对象的 XML 字符串。然后我在 WebBrowser 中显示输出。一切都很好,除了 XML 元素包含我需要在 WinForms HTML 浏览器中显示的额外空格。我不能在 html 中使用任何 javascript。这是一个示例 XML 元素:
我尝试用“”替换字符串," "
但这使得 XslCompiledTransform 对象用于转换的 xml 无效(XML 无效)。然后我尝试将“”替换为,"&nbsp"
但随后文本 
出现在我的 html 中而不是空格中。我怎样才能让多余的空间出现?
xml - 从子节点过滤和删除元素值到父节点xslt
有人可以告诉我如何删除所有子元素并将它们放在父节点中的逗号分隔行中,同时完全删除thumbURl
图像title
元素我已经必须对此文件进行转换,这是 xs:
这就是我需要修改的数据的样子
这就是我需要对数据做的事情:
c# - XslCompiledTransform 和自定义 XmlUrlResolver:“已存在具有相同键的条目”
有没有办法调试通过自定义 XmlUrlResolver 从数据库加载的 XSLT 文档,或者有人知道下面的错误消息是什么吗?
我有一个导入通用 xslt 文档的 XSLT 样式表:
该方案由从数据库加载 XSLT 文档的自定义处理XmlResolver
,但出现错误:
已存在具有相同键的条目。
引用的通用 XSLT 文档xsl:import
包含一些通用 XSLT 模板,每个模板都有一个唯一的名称。
将 XSLT 文档从本地文件系统移动到数据库后,开始出现此错误。使用指向本地文件的默认导入方案以及从本地文件系统加载 XSLT 文档时,不会发生错误。
在创建 的实例时,我还尝试打开调试XslCompiledTransform
,但不知何故,无法“进入”基于数据库的 XSLT。
更新:以下基本上是请求的解析器代码,但我的代码中没有发生异常;因此我猜下面这段代码中没有明显的原因。(同样的代码实际上用于加载包含导入的 XSLT 样式表,并且在注释掉导入时,一切都按预期工作。)
为了完整性,IDatabaseService 接口(相关部分):
更新:我试图通过临时从 Web 服务器加载样式表来隔离问题,这很有效。我了解到,与存储在 Web 服务器上的样式表相比,SQL Server 显然只存储没有 XML 声明的 XML 片段。
更新:异常的堆栈跟踪:
System.Xml.Xsl.XslLoadException:XSLT-Kompilierungsfehler。费勒贝 (9,1616)。---> System.ArgumentException: 已存在具有相同键的条目.. bei System.Collections.Specialized.ListDictionary.Add(Object key, Object value) bei System.Collections.Specialized.HybridDictionary.Add(Object key, Object value) bei System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(XmlReader reader, Boolean include) bei System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(Uri uri, Boolean include) bei System.Xml.Xsl.Xslt.XsltLoader .LoadStylesheet(XmlReader reader, Boolean include) --- Ende der inneren Ablaufverfolgung des Ausnahmestacks --- bei System.Xml.Xsl.Xslt.XsltLoader.LoadStylesheet(XmlReader reader, Boolean include) bei System.Xml.Xsl.Xslt.XsltLoader .Load(XmlReader reader) bei System.Xml.Xsl.Xslt.XsltLoader.Load(Compiler compiler, Object stylesheet,
.net - 使用 XSLT 替换 XML 中的所有匹配节点
我想替换 xml 文件中的所有匹配节点。
到原始xml:
我应用了以下xslt:
但它产生相同的xml。我做错了什么?
c# - 使用 XslCompiledTransform 去除空格
我正在尝试将大型应用程序从XslTransform
已编译的 xsl 文件和XslCompiledTransform
.
该应用程序使用Xsl
来创建 HTML 文件,并且转换数据 ( Xml
) 被传递给Xsl
从XmlDataDocument
数据库返回的 。
我已经改变了这一切,所以现在我做了(至少是暂时的):
C#
XSL(只是一个例子)
问题
这行得通,但 xsl 正在剥离标签输出之间的空格:
我试过了:
- 使用
xml:space="preserve"
但我无法让它工作 - 覆盖
OutputSettings
,但我没有得到任何好的结果(也许我错过了一些东西) - 使用
xsl:output method="xml"
, 并且有效,但会创建自闭合标签和许多其他问题
所以我不知道该怎么办。也许我做的不对。非常感谢任何帮助。
谢谢!
编辑
只是为了将来参考,如果你想解决这个问题,让每个 XSL 保持不变,可以试试我写的这个 C# 类,命名为CustomHtmlWriter
.
基本上我所做的是扩展XmlTextWriter
和修改编写每个标签的start
方法end
。
在这种特殊情况下,您可以像这样使用它:
希望它可以帮助某人。
c# - Get html as String with XslCompiledTransform. Result is empty
I want to create a html list () from an xml using xslt. I was able to do so with an xml file and a xslt file. Now I want to do it with an xml string or XmlDocument and and xslt file.
This is my current code:
#xA;It is on a single web application assembly. No exception is thrown. Just returns "".
My XSLT
#xA;MY XML
#xA;Thanks!