XSLT - 如何以正确的方式插入当前日期时间

use*_*908 2 xml xslt xpath xslt-2.0

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

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>
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在 XSLT 中格式化正确的日期时间。也许我的代码是错误的。谢谢你的帮助 :)

Tim*_*m C 5

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

 <xsl:attribute name="Header/date">
Run Code Online (Sandbox Code Playgroud)

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

 <xsl:attribute name="date">
Run Code Online (Sandbox Code Playgroud)

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

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

实际上,您可以使用属性值模板来简化这一过程。尝试这个

<Header testCode="Test_3334" testId="" date="{current-dateTime()}">
Run Code Online (Sandbox Code Playgroud)

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