【问题标题】:xpath for matching DateTime format用于匹配 DateTime 格式的 xpath
【发布时间】:2016-05-10 18:40:06
【问题描述】:

我正在编写一个 xslt 来查找具有特定日期格式的所有元素。但是“match”语句似乎有问题。我需要使用 C# 代码将此日期格式化为自定义格式。任何帮助都会很棒..

我的 XSLT 是:

  <xsl:template match="text()[.='[M01]/[D01]/[Y0001]']">
    <xsl:value-of select="userCSharp:GetFormatedDate(.)" />
  </xsl:template>

我的 Xml 是:

<Root>
<Name>Don</Name>
<EffectiveDate>01/30/2015</EffectiveDate>
</Root>

【问题讨论】:

    标签: c# xml xslt xpath


    【解决方案1】:

    我认为您使用的是 XSLT 1.0?如果是这样,请尝试:

    <xsl:template match="text()[translate(., '123456789', '000000000') = '00/00/0000']">
        <xsl:value-of select="userCSharp:GetFormatedDate(.)" />
    </xsl:template>
    

    请注意,这匹配 任何 具有##/##/#### 模式的文本节点。它检查MM/DD/YYYY 格式的有效日期。 99/99/9999 的“日期”也可以通过此测试。

    【讨论】:

    • 谢谢迈克尔。但是某些节点中的日期格式可以是 '1/30/2015 12:00:00 AM' 。处理这个问题的最佳方法是什么?
    • 嗯,这取决于。您可以测试每种可能的模式(如果您有两个或三个以上的模式,这可能会变得乏味)或将其移植到另一种语言。显然你的处理器支持一些扩展,所以也许你可以让它使用正则表达式。
    • P.S.我很困惑为什么你需要做这种分析。您不知道您的样式表将处理的 XML 文档的结构吗?
    • 我的意图是处理这些节点,以便通过 xml 反序列化器,该反序列化器由于无效的日期时间格式而引发异常。它只允许像'1961-03-23T00:00:00'这样的格式
    • 恐怕你误会了。我问你为什么需要搜索具有像日期一样模式的字符串的节点 - 而不是按名称调用它们,例如EffectiveDate 在给定的例子中?
    猜你喜欢
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多