Xslt 在XSL中处理隐藏在字符串中的整数

Xslt 在XSL中处理隐藏在字符串中的整数,xslt,Xslt,我有一个H:mm:ss格式的存储时间值。小时可以是从0到几天的任意值。该数据以XML标记形式发送,并由XSL处理以显示。我想要的显示格式如下: D天,HH:mm:ss小时/分钟 其中,如果HH大于0,则最后一个标记显示小时;如果HH大于0,则显示分钟 考虑到原始的HH(可能大于24),我知道我需要HH/24的下限来获得天数值。然后原来的HH%24给了我剩余的时间 我还使用xsl:when和xsl:if处理了分钟和小时问题 它从小时值中得到了天和小时,这让我感到困惑 编辑 到目前为止,我正在考虑做

我有一个H:mm:ss格式的存储时间值。小时可以是从0到几天的任意值。该数据以XML标记形式发送,并由XSL处理以显示。我想要的显示格式如下:

D天,HH:mm:ss小时/分钟

其中,如果HH大于0,则最后一个标记显示小时;如果HH大于0,则显示分钟

考虑到原始的HH(可能大于24),我知道我需要HH/24的下限来获得天数值。然后原来的HH%24给了我剩余的时间

我还使用xsl:when和xsl:if处理了分钟和小时问题

它从小时值中得到了天和小时,这让我感到困惑

编辑 到目前为止,我正在考虑做以下工作:

变量声明

<xsl:variable name="time"><xsl:value-of select="time" /><xsl:variable>
<xsl:variable name="days"><xsl:value-of select="floor(substring-before(time, ':') / 24)" /></xsl:variable>
<xsl:variable name="hours"><xsl:value-of select="substring-before(time, ':') mod 24" /></xsl:variable>
<xsl:variable name="minutes"><xsl:value-of select="substring-after(time, ':')" /></xsl:variable>
使用


为了澄清,一天2:15小时的采样时间为26:15:00。

以下是我需要进行的修改,以使我最初的尝试工作正常。我需要记住变量的美元符号。我需要使用div而不是/。最重要的是,我需要表达式number来将子字符串转换为数字。这就是我想到的。不过,我欢迎能够改进XSLT的评论

<xsl:variable name="time"><xsl:value-of select="time" /><xsl:variable>
<xsl:variable name="totalHours><xsl:value-of select="number(substring-before($time, ':'))" /></xsl:variable>
<xsl:variable name="days"><xsl:value-of select="floor($totalHours div 24)" /></xsl:variable>
<xsl:variable name="hours"><xsl:value-of select="$totalHours mod 24" /></xsl:variable>
<xsl:variable name="minutes"><xsl:value-of select="substring-after(time, ':')" /></xsl:variable>

真正的问题是什么?您是否有一段代码示例来描述您当前正在尝试的操作?@dboarman FissureStudios-我已经对代码进行了更新,希望能进一步澄清我的问题。我需要做的是找出如何以小时、分钟和秒为单位获得给定格式的天数,并将其转换为一个漂亮的字符串。
<xsl:variable name="time"><xsl:value-of select="time" /><xsl:variable>
<xsl:variable name="totalHours><xsl:value-of select="number(substring-before($time, ':'))" /></xsl:variable>
<xsl:variable name="days"><xsl:value-of select="floor($totalHours div 24)" /></xsl:variable>
<xsl:variable name="hours"><xsl:value-of select="$totalHours mod 24" /></xsl:variable>
<xsl:variable name="minutes"><xsl:value-of select="substring-after(time, ':')" /></xsl:variable>