如何使用XSL更改时间值以包含前导零?

时间:2013-09-25 22:23:55

标签: xml xslt

我已经获得了一个XML文件,其中填充了包含“start_time”事件的元素,该事件不会添加前导零时间结构。

E.g。
“12:00”= OK
“21:00”= OK
“9:00”=不行星

我需要XML“start_time”保持一致,以便我可以对这些属性执行排序。即我需要时间总是4位数(如果计算冒号分隔符,则为5)。例如。 “09:00”,当添加前导零时。

有谁能建议我怎么做?我是XSL的新手,到目前为止我还没有得到任何东西。

XML如下所示:

<ArrayOfEvent>
 <Event>
  <category_name>Academic</category_name>
  <event_title>Test (Paper one)</event_title>
  <allday>false</allday>
  <start_time>12:52</start_time>
  <start_date>04/10/2012</start_date>
  <end_time>9:00</end_time>
  <end_date>04/10/2012</end_date>
 </Event>

 <Event>
  <category_name>Academic</category_name>
  <event_title>Test (Paper two)</event_title>
  <allday>false</allday>
  <start_time>2:00</start_time>
  <start_date>10/10/2012</start_date>
  <end_time>9:00</end_time>
  <end_date>10/10/2012</end_date>
 </Event>

 <Event>
  <category_name>Academic</category_name>
  <event_title>Prize Giving</event_title>
  <allday>false</allday>
  <start_time>22:31</start_time>
  <start_date>23/09/2013</start_date>
  <end_time>9:00</end_time>
  <end_date>23/09/2013</end_date>
 </Event>
</ArrayOfEvent>

2 个答案:

答案 0 :(得分:0)

最简单的答案是添加

<xsl:if test="string-length(end_time) &lt; 5">0</xsl:if>

在适当的地方。

答案 1 :(得分:0)

您可以使用number(translate($in, ':', '.'))将其转换为数字,然后将format-number($n, '00:00')与使用“:”作为小数分隔符的十进制格式结合使用。