使用XSLT将字符串表示转换为日期

时间:2013-05-27 13:22:49

标签: xslt jira

基于来自JIRA的XML RSS提要,我正在尝试根据日期创建一些分组 - 即全年一个月内有多少个错误。 这给了我一些问题。我可以根据他们的类型找到并分组任务,但是当涉及到处理日期时,我已经做不到了。

日期字符串如下所示:<created>Thu, 4 Oct 2012 10:53:38 +0200</created>。 我的问题是我似乎无法从这个字符串中提取月份和年份。

该脚本将在JIRA / Confluence下运行,因此我怀疑exslt的date-paser是否适用于该平台。

我不需要时间,所以可以删除。我需要的是能够从这个文本字符串中提取月份+年份,以便我按照那些分组(02-2012)。

1 个答案:

答案 0 :(得分:2)

相当丑陋但仍然是一个分组问题。使用xslt-1.0的“正常”解决方案是 muenchian分组(例如,查看this)。

使用此键:

<xsl:key name="kMonthYear" match="created"  use="concat( 
                        substring-before(
                            substring-after( substring-after( substring-after(., ' '), ' '),' ')
                            , ' '),
                         '-', 
                         substring-before(
                            substring-after( substring-after(., ' '), ' ')
                            , ' ')
                        )" />

循环群组:

<xsl:for-each select="//created[
         generate-id() = generate-id(key('kMonthYear', concat( 
                    substring-before(
                        substring-after( substring-after( substring-after(., ' '), ' '),' ')
                        , ' '), 
                     '-', 
                     substring-before(
                        substring-after( substring-after(., ' '), ' ')
                        , ' ')
                    ))[1])
          ]" >

循环群组成员

        <xsl:for-each select="key('kMonthYear', concat( 
                    substring-before(
                        substring-after( substring-after( substring-after(., ' '), ' '),' ')
                        , ' '), 
                     '-', 
                     substring-before(
                        substring-after( substring-after(., ' '), ' ')
                        , ' ')
                    ))" >

我没有看到如何按月分类,没有任何扩展或使用xslt-2.0,但是没有请求。