XSLT - 如何以正确的方式插入当前的dateTime

时间:2013-10-16 14:31:22

标签: xml xslt xpath xslt-2.0

我正在努力解决问题 - 我试图在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中格式化正确的日期时间。也许我的代码错了。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:3)

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

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

你不应该在这里指定一个xpath表达式,但字面上只是属性的名称,它将被添加到你输出的最新元素

 <xsl:attribute name="date">

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

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

实际上,您可以使用Attriute Value Templates简化此操作。试试这个

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

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