XSLT 中的 ISOString 日期格式

ISOString Date format in XSLT

我有以下 XML 输入文件。

<?xml version="1.0" encoding="UTF-8"?>
<ns3:Bonger xmlns:ns3="http://NEXSTEP.Schemas.Bonger" xmlns:ns2="http://NEXSTEP.Schemas.NexstepTypes">
  <ROUTE_RECORD>
    <ns2:SENDER Sender_code="BO_SERVER"/>
    <ns2:RECEIPIENT Receipient_code="MASTER"/>
    <ns2:OverAllStatus>NY</ns2:OverAllStatus>
  </ROUTE_RECORD>
  <MESSAGE_RECORD>
    <InsertChange>
      <Message>
        <ns2:OpprettetEndretSlettet>
          <ns2:OpprettetTidspunkt>2021-08-09+02:00</ns2:OpprettetTidspunkt>
          <ns2:OpprettetKl>15:13:14.636+02:00</ns2:OpprettetKl>
          <ns2:EndretAv>ADMIN</ns2:EndretAv>
        </ns2:OpprettetEndretSlettet>
      </Message>
    </InsertChange>
  </MESSAGE_RECORD>
</ns3:Bonger>

使用转换器,我需要同时使用 OpprettetTidspunkt 和 OppretteKl(日期和时间),并且需要输出类似 2021-08-09T10:48:15.057

请注意,我需要将 MSG_DATE 输出为 ISOString 格式

有什么想法吗??

与您的输入相比,您显示的两个输出都没有意义。假设给定示例中的正确输出实际上是:

MSG_DATE>2021-08-09T15:13:14.636+02:00</MSG_DATE>

你可以简单地做:

<xsl:template match="/ns3:Bonger">
    <!-- ... -->
    <MSG_DATE>
        <xsl:variable name="mod" select="MESSAGE_RECORD/InsertChange/Message/ns2:OpprettetEndretSlettet"/>
        <xsl:value-of select="substring($mod/ns2:OpprettetTidspunkt, 1, 10)"/>
        <xsl:text>T</xsl:text>
        <xsl:value-of select="$mod/ns2:OpprettetKl"/>
    </MSG_DATE>
    <!-- ... -->
</xsl:template>