xml - XSLT 2.0:增加时间和开场比赛
问题描述
首先,我将 XSLT 2.0 与 SAXON-HE 9.5.1.5 一起使用。
以下命令是否有任何替代方法?
<xsl:mode on-no-match="shallow-copy"/>
在我的输入 XML 中,有一个时间字段将以 HH:MM 格式出现。我想添加它,结果格式也将仅为 HH:MM 格式。
输入 XML
<Root>
<Detail>
<Time>24:00</Time>
<Detail>
<Detail>
<Time>59:10</Time>
<Detail>
<Detail>
<Time>4:59</Time>
<Detail>
<Detail>
<Time></Time>
<Detail>
<Detail>
<Detail>
<Root>
将不胜感激快速帮助。
解决方案
要添加时间值,我建议
<xsl:variable name="totalTime"
select="sum(Detail/Time !
xs:dayTimeDuration(replace(., '(\d+):(\d+)', 'PT$1H$2M')))"/>
<xsl:value-of select="hours-from-duration($totalTime),
format-number(minutes-from-duration($totalTime), '00')"
separator=":"/>
将时间转换为持续时间的另一种方法是附加“:00”、转换为xs:time
和减去xs:time('00:00:00')
。
至于xsl:mode
,如果您升级到最近的版本(9.8 或 9.9),XSLT 3.0xsl:mode
声明在 Saxon-HE 中可用。
推荐阅读
- ios - 获取数组中的唯一项
- javascript - 使用 UA 集成中可用的 gtag.js 或 analytics.js 发送事件数据
- html - 双列表框禁用选择选项
- javascript - 未删除行时无法返回 false
- azure - 从 Azure 函数运行容器的最佳方法
- wordpress - Dockerfile - 在容器路径中触摸文件
- operator-overloading - Julia 中的重载与覆盖
- php - 动态打折 Woocommerce 产品
- reactjs - 如何一个接一个地调用顺序动作——并确保两者都被渲染(react-redux)?
- python - 将值附加到 Pandas 系列