Tag: xslt

不能在xslt中使用current-datetime函数

我无法在xslt中使用current-dateTime函数。 这就是我的样式表声明的样子。 每次我编译时都会得到一个错误,即current-dateTime不是XSLT函数 这就是我调用函数的方式。

XSLT:处理模板中的Xml节点集,同时仍然可以访问文档根目录

我有一个xslt样式表,需要调用C#XSLT扩展函数来处理元素集合。 代码看起来有点像这样: XSLT: … 扩展方法: public XPathNavigator GetSomeCollection(string Attribute) { XmlDocument doc = new XmlDocument() //etc… return doc.CreateNavigator(); } 扩展方法返回一个XPathNavigator因为这是我可以看到扩展方法返回任何类型集合的唯一方法。 我遇到的问题是我的模板(mode =“MyTemplate”)需要能够访问根/输入文档中的xml节点到xslt样式表(以及由返回的节点集中的节点)扩展方法),但模板似乎只能访问GetSomeCollection返回的xml片段 – xpath表达式开始/只是解析为该片段的开头。 我可以看出为什么会这样(模板正在处理xml片段,但该片段属于不同的文档),但是我看不到如何绕过它。 似乎没有任何方法可以使扩展方法生成属于原始文档的xml片段。 我能做什么?

转换大型Xml文件

我正在使用此扩展方法使用xslt转换非常大的xml文件。 不幸的是,我在source.ToString()行上得到了OutOfMemoryException。 我意识到必须有一个更好的方法,我只是不确定那会是什么? public static XElement Transform(this XElement source, string xslPath, XsltArgumentList arguments) { var doc = new XmlDocument(); doc.LoadXml(source.ToString()); var xsl = new XslCompiledTransform(); xsl.Load(xslPath); using (var swDocument = new StringWriter(System.Globalization.CultureInfo.InvariantCulture)) { using (var xtw = new XmlTextWriter(swDocument)) { xsl.Transform((doc.CreateNavigator()), arguments, xtw); xtw.Flush(); return XElement.Parse(swDocument.ToString()); } } } 思考? 解决方案? 等等。 更新:现在这已经解决了,我在validation架构时遇到了问题! validation大型Xml文件

如何解决XSL包含在从String加载XSL的转换中?

.NET 2.0 / VS2005 我试图使用XslCompiledTransform类来执行XSL转换。 我有两个XSL文件,第一个包含对语句forms的另一个引用: Main.xsl: … … 现在,如果我可以将“Main.xsl”文件本身作为URI加载,我的转换代码就像下面这样简单: // This is a function that works. For demo only. private string Transform(string xslFileURI) { XslCompiledTransform xslt = new XslCompiledTransform(); // This load works just fine, if I provide the path to “Main.xsl”. // The xsl:include is automatically resolved. xslTransform.Load(xslFileURI); StringWriter sw = new StringWriter(); […]

使用.NET的XSLT小写

我使用XMLSpy使用以下XSLT: 如果我尝试在我的源代码中使用它(XslCompiledTransform),我会得到一个exception,告诉我函数’lower-case()’不是XSLT synthax的一部分。 所以我改变了一点转变: fn:lower-case 现在我的例外是无法找到以’http://www.w3.org/2005/xpath-functions’为前缀的脚本或外部对象。 这件事怎么回事? 我该如何解决? 问候

XslCompiledTransform和自定义XmlUrlResolver:“具有相同键的条目已存在”

有没有办法调试由自定义XmlUrlResolver从数据库加载的XSLT文档,或者有人知道,下面的错误消息是什么? 我有一个XSLT样式表导入一个常见的xslt文档: Scheme由一个自定义的XmlResolver处理,它从数据库加载XSLT文档,但是我收到一个错误: 已存在具有相同密钥的条目。 xsl:import引用的公共XSLT文档包含一些常见的XSLT模板,每个模板都有一个唯一的名称。 将XSLT文档从本地文件系统移动到数据库后,此错误开始发生。 使用指向本地文件的默认导入方案时以及从本地文件系统加载XSLT文档时,不会发生错误。 我还尝试在创建XslCompiledTransform的实例时打开调试,但不知何故不可能“进入”基于数据库的XSLT。 _xslHtmlOutput = new XslCompiledTransform(XSLT_DEBUG); 更新:以下基本上是请求的解析器​​代码,但我的代码中没有发生exception; 因此,我想在下面的代码中没有明显的原因。 (这个相同的代码实际上用于加载包含导入的XSLT样式表,当注释掉导入时,一切都按预期工作。) public class XmlDBResolver : XmlUrlResolver { private IDictionary GetUriComponents(String uri) { bool useXmlPre = false; uri = uri.Replace(“db://”, “”); useXmlPre = uri.StartsWith(“xml/”); uri = uri.Replace(“xml/”, “”); IDictionary dict = new Dictionary(); string app = null, area = null, subArea = […]

C#如何在内存对象中执行实时xslt转换?

我有一个带有2个参数的函数:1 = XML文件,2 = XSLT文件,然后执行转换并返回生成的HTML。 这是function: /// /// Will apply an XSLT style to any XML file and return the rendered HTML. /// /// /// The file name of the XML document. /// /// /// The file name of the XSL document. /// /// /// The rendered HTML. /// public string TransformXml(string xmlFileName, string xslFileName) […]

如何以可读的格式显示WriteXml中的DataTable XML?

我有一些DataTables,我想导出到一个文件,然后看看。 我可以使用DataTable.WriteXml()将DataTables的内容输出到XML,但是以表格forms显示这些数据的简单方法是什么? 一种建议的方法是使用XSLT或类似的方法将XML转换为可读的东西。 我不知道这是否容易,但如果它易于使用,那将是一个很好的解决方案。 我从WriteXml()获得的单个DataTable的XML示例如下所示。 这是一个名为’RecentMatter’的表,包含10列和3行数据。 我希望它显示为数据表。 我不太关心数据值的格式化,例如将DateTime值转换为更可读的值。 我在生成它时使用了XmlWriteMode.WriteSchema参数。 如果删除它,则删除所有架构信息(在第一个标记之前)。 不同的表显然会有不同的列数,因此任何解决方案都需要处理它,理想情况下无需修改具有不同列的表的解决方案。 PSLTP6\RJK 99999-2302 Test Matters DP Test Matter 99999 true 2011-08-23T23:40:24.13+01:00 PSLTP6\RJK 999991.0002 Lathe 1 LW Test 2 true 2011-07-12T16:57:27.173+01:00 PSLTP6\RJK 999991-0001 Lathe 1 LW Test 1 false 2011-07-12T01:59:06.887+01:00

将SAXON 9.5(nuget)与Schematron一起使用

我正在运行此代码: string path = AppDomain.CurrentDomain.BaseDirectory; // Uri schemaUri = new Uri(@”file:\\” + path + @”\sch\patient.sch”); Uri totransformEE = new Uri(@”file:\\” + path + @”\po\po-schema.sch”); Uri transformER = new Uri(@”file:\\” + path + @”\xsl\conformance1-5.xsl”); /////////////////////////////// // Crate Schemtron xslt to be applied /////////////////////////////// // Create a Processor instance. Processor processor = new Processor(); // Load the […]

使用XML和XSL

第一次编辑 我正在以C#格式将Child 1标记提取到DropDownList中,Plz建议使用最佳实践代码(C#)删除XML文件中的Parent标记及其所有子标记。 例: Something Something Something Something Something 1 Something 1 Something 1 Something 1 — 上一个问题 — 如何将以下样式表标记插入到使用C#代码创建的新xml文件中? 用于创建xml文件的C#代码: – new XDocument( new XElement(“issues”, new XElement(“issue”, new XElement(“cat”, comboBox1.Text), new XElement(“desc”, richTextBox1.Text), new XElement(“end”, dateTimePicker1.Text), new XElement(“att”, textBox2.Text) ) ) ).Save(path);