我有以下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>
使用变压器,我需要同时使用oppretettidspunkt和oppretetkl(日期和时间),并且需要输出类似于
请注意,我需要将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>