C# XSLT : How to debug this error?

标签 c# xslt

我必须在我的 XSLT 文件中包含一个 C# 脚本..以便计算两个 dateTime 值之间的差异(并将其添加到其他一些值)..我需要接受所有可能的日期格式 ..我想用 XSLT 来做..但是因为 XSLT 不允许这样做(隐含地)..我发现了调用 C# 脚本的补救措施..我必须从许多不同的 C# 程序中调用 XSL 转换..所以在所有调用 C# 代码中编写这段代码会很痛苦(相当不可能)..:(你能找到一些补救办法吗

这是 XSLT 代码..

 <xsl:variable name="date1" select="//date1"/>
  <xsl:variable name="date2" select="//date2"/>
  <msxsl:script language="C#" implements-prefix="cs">
    <![CDATA[

    private static string[] formats = new string[]
    {
        "MM/dd/yyyy HH:mm:ss tt",
        "MM/dd/yyyy HH:mm:ss",
        "MM/dd/yyyy H:mm:ss tt",
        "MM/dd/yyyy H:mm:ss",
"M/dd/yyyy HH:mm:ss tt",
"M/dd/yyyy HH:mm:ss",
"M/dd/yyyy H:mm:ss tt",
"M/dd/yyyy H:mm:ss",
"MM/d/yyyy HH:mm:ss tt",
"MM/d/yyyy HH:mm:ss",
"MM/d/yyyy H:mm:ss tt",
"MM/d/yyyy H:mm:ss", 
"M/d/yyyy HH:mm:ss tt",   
"M/d/yyyy HH:mm:ss", 
"M/d/yyyy H:mm:ss tt", 
"M/d/yyyy H:mm:ss",      
    };


      public string datedif(string date1, string date2) {


            DateTime startTime;
            DateTime endTime;
            DateTime ThirdDate;

string date3="12/12/2009 00:00:00";

            DateTime.TryParseExact(date1, formats, new CultureInfo("en-US"), 
                                   DateTimeStyles.None, out startTime);
            DateTime.TryParseExact(date2, formats, new CultureInfo("en-US"), 
                                   DateTimeStyles.None, out endTime);
            DateTime.TryParseExact(date3, formats, new CultureInfo("en-US"), 
                                   DateTimeStyles.None, out ThirdDate);

ThirdDate = ThirdDate.Add(endTime.Subtract(startTime));


string result = ThirdDate.ToString("MM'/'dd'/'yyyy' 'HH':'mm':'ss");
return(result);

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

错误是:

  1. 名称“DateTimeStyles”在当前上下文中不存在

  2. 找不到类型或 namespace 名称“CultureInfo”(是否缺少 using 指令或程序集引用?)

非常感谢 .. Jon Skeet

最佳答案

这些是 C# 编译器的错误。您需要提供更多有关您尝试执行的操作的信息。

听起来您至少缺少一个 using 指令:

using System.Globalization;

但是你没有说错误在哪里或者你在做什么。

编辑:如果您无法更改任何其他内容,则将对 DateTimeStylesCultureInfo 的引用更改为完全限定:

global::System.Globalization.DateTimeStyles
global::System.Globalization.CultureInfo

例如,您将拥有:

DateTime.TryParseExact(date1, formats,
     new global::System.Globalization.CultureInfo("en-US"), 
     global::System.Globalization.DateTimeStyles.None, out startTime);

关于C# XSLT : How to debug this error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888880/

相关文章:

c# - Windows Phone 8 中缺少 ButtonBase.Click

java - 如何从Camel路由的xsl apply-templates中传递参数

c# - 使用 xslt 将 xml 转为 json

c# - 如何使用生产者/消费者队列递归搜索文件夹和文件?

xml - 从 XSLT 1.0 中的字符串中提取多个子字符串

xml - 不匹配的子元素也出现在 XSL 模板下

xml - 如何修剪xslt中的特殊符号? (不仅限于空格)

c# - 如何在虚拟模式下以编程方式编辑 datagridview 的单元格值?

c# - 我有一个 .net 4.7 项目,但我无法添加对 NetStandard 2.0 的引用

C# 结构大小评估