【问题标题】:XSLT - How to insert current dateTime in a right wayXSLT - 如何以正确的方式插入当前日期时间
【发布时间】:2013-10-16 14:31:21
【问题描述】:

我正在努力解决一个问题 - 我试图在 XSLT 中插入当前日期时间,但由于语法不正确而出现错误。我的 XML 文件没有日期时间,因此我需要在 XSLT 文件中插入当前日期时间 (date="" with attribute) - 如下所示:

XSLT:

<TestList>
  <Header testCode="Test_3334"  testId="" date="">
    <xsl:attribute name="Header/date">
        <xsl:value-of  select="current-dateTime()"/>
      </xsl:attribute>
    <Validation TestName="{Header/Validation/TestName}" TestSurname="{Header/Validation/Surname}" checksum="{Header/Validation/Checksum}" />
  </Header>
  <Tests>
    <xsl:apply-templates select="Tests/Test"/>
  </Tests>
</TestList>

有没有办法在 XSLT 中格式化正确的日期时间。也许我的代码是错误的。感谢您的帮助:)

【问题讨论】:

  • 您使用的是什么 XSLT 解析器?
  • 永远不要告诉我们“我遇到了错误”。告诉我们错误是什么。为什么要求我们蒙着眼睛解决问题?您可能不理解错误消息,但我们可能会。

标签: xml xslt xpath xslt-2.0


【解决方案1】:

问题可能不在于“current-dateTime()”函数,而在于属性名称:

 <xsl:attribute name="Header/date">

您不应该在此处指定 xpath 表达式,而应仅指定属性的名称,它将添加到您输出的最新元素中

 <xsl:attribute name="date">

您实际上也不需要首先在 Header 上指定“日期”属性(尽管这不会破坏任何内容,如 xsl:attribute 将覆盖它)。这应该有效:

<Header testCode="Test_3334" testId="">
    <xsl:attribute name="date">
        <xsl:value-of  select="current-dateTime()"/>
    </xsl:attribute>

实际上,您可以使用属性值模板简化此操作。试试这个

<Header testCode="Test_3334" testId="" date="{current-dateTime()}">

请注意,您需要使用 XSLT 2.0 处理器才能使 dateTime 函数工作。

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    相关资源
    最近更新 更多