gpt4 book ai didi

c# - 如何在 C# 中启用 XSLT 脚本 ..?

转载 作者:太空狗 更新时间:2023-10-29 20:49:51 28 4
gpt4 key购买 nike

找到答案后修改了题目:) :P

我正在通过 C# 程序加载一个 XML 文件和一个 XSL 文件并触发 XSL 转换..这是它的代码:

static void Main(string[] args)
{

// Create the XslCompiledTransform and load the stylesheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("input.xsl"); //located in Debug folder
//Load XSL argument list
XsltArgumentList xslArg = new XsltArgumentList();

// Transform the file.
using (XmlWriter w = XmlWriter.Create("output.xml"))
{
xslt.Transform("input.xml", xslArg, w); //located in Debug folder
}
}

错误是我无法加载 XML 文件。

XSL 文件包含一些 C# 代码,用于计算两个 DateTime 字符串之间的差异..好吧,我可以使用相同的 XSL 文件手动转换 XML 文件..但是当我尝试使用 C# 代码触发转换..然后它说“它无法加载 XML 文件”

这是我的(部分)XSL 代码..

<span bgcolor="#EEEEEE">

&lt;xsl:variable name="date1" select="//date1"/&gt;
&lt;xsl:variable name="date2" select="//date2"/&gt;

&lt;msxsl:script language="C#" implements-prefix="cs"&gt;
&lt;![CDATA[
public string datediff(string date1, string date2) {

DateTime startTime = new DateTime(Convert.ToInt32(date1.Substring(6, 4)), Convert.ToInt32(date1.Substring(0, 2)), Convert.ToInt32(date1.Substring(3, 2)), Convert.ToInt32(date1.Substring(11, 2)), Convert.ToInt32(date1.Substring(14, 2)), Convert.ToInt32(date1.Substring(17, 2)), 0);

DateTime endTime = new DateTime(Convert.ToInt32(date2.Substring(6, 4)), Convert.ToInt32(date2.Substring(0, 2)), Convert.ToInt32(date2.Substring(3, 2)), Convert.ToInt32(date2.Substring(11, 2)), Convert.ToInt32(date2.Substring(14, 2)), Convert.ToInt32(date2.Substring(17, 2)), 0);

return(endTime.Subtract(startTime));

}
]]>
&lt;/msxsl:script&gt;<br>
&lt;xsl:template match="datediff"&gt;<br>
&lt;xsl:element name="{local-name()}"&gt;<br>
&lt;xsl:value-of select="cs:datediff($date1, $date2)" /&gt;<br>
&lt;/xsl:element&gt;<br>
&lt;/xsl:template&gt;<br></span>

是因为脚本(计算日期差异的 C# 代码..)我收到此错误吗?
顺便说一句,当我使用其他一些输入 XML 和 XSL 文件时,C# 代码运行完美..

请帮助我克服这个错误..

最佳答案

作为Steve cooper已经提到..您需要启用 XSLT脚本..和here is the way to do it :

首先定义一个新的settings实例:

var settings = new XsltSettings();

然后启用脚本

settings.EnableScript = true;

创建 XslCompiledTransform 对象并加载样式表,传入 settings 对象。

关于c# - 如何在 C# 中启用 XSLT 脚本 ..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1872568/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com