Tag: xslt

从同一项目访问XSLT文件作为资源?

我有一个XSLT文件,我想加载并用于转换XML文件。 我已将文件添加到与使用它的代码相同的项目中,并将其放在“Resources”文件夹中,并将Build Action设置为“Resource”。 这是尝试访问该文件的代码: XslCompiledTransform myXslTransform = new XslCompiledTransform(); myXslTransform.Load(@”[projectName];component/Resources/OrderManagement/OrderOverview.xslt”); …其中[projectName]是项目的名称。 然而,这似乎不起作用。 我玩过不同的路径,但不知怎的,我似乎没有把它弄好。 我确定这只是一件小事,但我在互联网(或这里)找到的文章都没有帮助过我。 有人可以帮忙吗?

带有C#扩展function的XSLT中的错误消息

尝试在XSLT中实现C#扩展函数时收到以下错误。 不支持具有CLR类型“Char []”的扩展函数参数或返回值。** 码: 有人可以解释这个错误信息以及如何通过它吗? 编辑:我需要一个解决方案仍然允许我实现拆分function并使用返回的数组。 谢谢!

使用XPath /应用XSL转换遍历任意C#对象图

我一直在寻找一个允许我将任意C#对象传递给XSL转换的组件。 这样做的天真方法是使用XmlSerializer序列化对象图; 但是,如果你有一个大的对象图,就性能而言,这可能会导致问题。 诸如循环引用,延迟加载,代理等问题可能会使这里的水域更加混乱。 更好的方法是使用某种实现IXPathNavigable和XPathNavigator的Adapter类。 我遇到的一个这样的例子是来自Byte-Force的ObjectXPathNavigator – 但是,它的大部分关键文档都是俄语的,我的初步测试似乎表明它有一些怪癖和特质。 有没有人知道(a)关于这个特定英语的任何资源(概述,教程,博客文章等)或(b)提供相同或类似function的任何其他替代方案?

在XSLT中最后一次出现字符后获取子字符串

我在XML文件中有一个字符串,看起来类似于: M:Namespace.Class.Method(Something a,something b) 句点(。)字符的数量是有用的,这意味着它在本例中只能是2,但可以更多。 我想使用XSLT从最后一个’。’获取该字符串的子字符串。 性格,所以我只剩下: 方法(某事,某事b) 我无法使用标准的substring / substring-after函数实现此目的。 是否有捷径可寻?

xslt是将文本转换为xml结构的好方法吗?

我试图找到一个更好的解决方案,将纯文本(但每个字段的预定义长度)转换为xml。 例如,输入文本可以是“Testuser new york 10018”,前11个字符表示用户名,接下来的12个字符表示城市,接下来的5个字符表示邮政编码。 所以我需要使用预定义的字段长度从上面的字符串形成一个xml。 我在想两种方法 通过在输入文本上使用子字符串函数定义业务实体并填充实体属性,然后将实体序列化为xml 预定义xml结构,使用xslt导航到每个节点并使用输入文本上的子字符串函数填充值。

C#XSLT转换添加
 和
 到输出

我有一个XSLT转换问题: style=”width:{Data/PercentSpaceUsed}%;” Data / PercentSpaceUsed的值是整数3。 它输出: style=”width: 3 %;” 而不是我的预期: style=”width:3%;” 这是执行转换的代码: xslt_xslt是转换xml, sw.ToString()包含 和 这是我没想到的。 var xslTransObj = new XslCompiledTransform(); var reader = new XmlTextReader(new StringReader(xslt_xslt)); xslTransObj.Load(reader); var sw = new StringWriter(); var writer = new XmlTextWriter(sw); xslTransObj.Transform(new XmlTextReader(new StringReader(xslt_data)), writer); ResultLiteral.Text = sw.ToString();

在C#中比较两个XML文件并使用XMLDiff生成第三个XML文件

我正在尝试编写一个简单的算法来读取具有完全相同的节点和结构的两个XML文件,但不一定是子节点内的相同数据而不是相同的顺序。 我如何使用Microsoft的XML Diff .DLL创建一个简单的实现来创建第三个临时XML,即两个第一个之间的差异? MSDN上的XML Diff: XML差异和补丁工具 XML Diff和Patch GUI工具 示例要比较的两个不同XML文件的XML代码: Sidney Crosby PIT C 39 32 33 20 29 Sidney Crosby PIT C 42 35 34 22 30 想要的结果(两者之间的差异) Sidney Crosby PIT C 3 3 1 2 1 在这种情况下,我可能会使用XSLT将生成的XML“差异”文件转换为已排序的HTML文件,但我还没有。 我想要做的就是在第三个XML文件中显示每个节点的每个数值的差异,从“GP”子节点开始。 到目前为止C#代码: private void CompareXml(string file1, string file2) { XmlReader reader1 = XmlReader.Create(new StringReader(file1)); XmlReader […]

在.NET中使用document()函数XSLT会产生错误

我想在我的XSLT文件中使用嵌入式资源,但在调用’document(…)’时,C#抱怨“加载文档时出错……” 我想在XSLT文件中使用已定义的资源并通过它获取它们:“document(”) // my:resources / ”… 我怎样才能做到这一点?? ex xsl: tryb 如何在C#中无exception地访问此类结构? 我将在静态转换期间通过ex添加。 Opera一切正常。

从Saxon 9.4he中的嵌入资源加载xml和xslt

我使用Saxon 9.4家庭版( Saxon-HE 9.4 .NET )来获得对XSLT 2.0和XPath 2.0以及.NET中的XQuery 1.0的支持。 当我加载没有URI的文件时,我的代码崩溃了。 是否可以在没有与加载的文档相关的URI的情况下加载xml / xsl文档? 如果没有,有没有办法为嵌入在dll文件中的元素定义URI? 任何其他解决方案也将受到赞赏,我唯一的术语是必须从dll文件中加载文件。 只要我从文件加载xml / xsl,我的代码就可以正常工作: const string sourcePath = @”C:\test\TestInvoiceWithError.xml”; const string xsltpath = @”C:\test\UBL-T10-BiiRules.xsl”; 当我尝试从嵌入式资源加载时,代码抛出一个exception,说明“没有提供基本URI” : Stream sourceStream = GetEmbeddedResource(“TestProject1.testfiles.TestInvoice.xml”); Stream xsltStream = GetEmbeddedResource(“TestProject1.testfiles.UBL-T10-BiiRules.xsl”); 我还为具有相对路径的资源创建了Uri,这会引发exception“相对URI不支持此操作”。 : Uri sourceUri = new Uri(“/TestProject1;component/testfiles/TestInvoice.xml”, UriKind.Relative); Uri xsltUri = new Uri(“/TestProject1;component/testfiles/UBL-T10-BiiRules.xsl.xml”, UriKind.Relative); 这是我的代码: using System; […]

使用C#对大型XML文件进行XSLT转换

我有一些非常大的XML文件(800 MB到1.5 GB)。 我需要在那上面应用XSLT。 我能够读取XMLTextReader。 当我应用XSLT转换时,获取SystemOutOfMemory Exception。 我的代码看起来像; static void Main(string[] args) { XDocument newTree = new XDocument(); XmlTextReader oReader = new XmlTextReader(@”C:\Projects\myxml.xml”); using (XmlWriter writer = newTree.CreateWriter()) { XslCompiledTransform oTransform = new XslCompiledTransform(); oTransform.Load(@”C:\Projects\myXSLT.xsl”); oTransform.Transform(oReader, writer); } Console.WriteLine(newTree); } 提前致谢。 这是非常紧急的。 如果我没有得到任何解决方案,我需要将XML拆分为更小的XML并进行转换。