我想用xslt代码做的是比较两个日期。但是,2个元素中的日期格式不同。出于这个原因,我的代码没有显示日期。
如何修改我的xslt代码以实现我的目标?
XSLT代码
<xsl:for-each select="Charge[($pCallType='Deleted') or (Deleted!='true') or (string-length(Deleted)=0)]/
ChargeHistory[($pCallType='Deleted') or (Deleted!='true') or (string-length(Deleted)=0) or (TimestampChange > ancestor::ControlPoint/@Timestamp)][@Stage='Warrant Issued'][last()]">
包含我正在比较的日期和时间的2个xml元素
<ControlPoint Timestamp="9/28/2015 1:26:26 PM"></ControlPoint>
<TimestampChange>09/28/2015 13:26:30</TimestampChange>
答案 0 :(得分:0)
您可以使用以下表达式:
10000000000 * substring(TimestampChange, 7, 4)
+ 100000000 * substring(TimestampChange, 1, 2)
+ 1000000 * substring(TimestampChange, 4, 2)
+ 10000 * substring(TimestampChange, 12, 2)
+ 100 * substring(TimestampChange, 15, 2)
+ substring(TimestampChange, 18, 2)
将TimestampChange
字符串转换为数字(在您的示例中为20150928132630
)。
使用类似的逻辑将ControlPoint/@Timestamp
字符串转换为可比较的数字(由于缺少填充和使用12小时制,这将更加困难。)
在XSLT 2.0中,您需要先将子字符串转换为数字,然后才能将它们相乘。