2013-05-27 3 views
2

으로 변환 JIRA의 XML RSS 피드를 기반으로 한 날짜를 기준으로 한 그룹화를 만들려고합니다. 이것은 나에게 몇 가지 문제를주고있다. 유형을 기반으로 작업을 찾아 그룹화 할 수 있지만 날짜를 처리 할 때는 짧게되었습니다.XSLT를 사용하여 문자열 표현을

날짜 문자열은 다음과 같습니다 : <created>Thu, 4 Oct 2012 10:53:38 +0200</created>. 제 문제는이 문자열에서 월과 일을 추출 할 수 없다는 것입니다.

이 스크립트는 JIRA/Confluence에서 실행되므로 exslt의 date-paser가 해당 플랫폼에서 작동하는지 의심 스럽습니다.

시간이 필요하지 않으므로 제거 할 수 있습니다. 내가 필요한 것은이 텍스트 문자열에서 월 + 연도를 추출하여 (02-2012) 그룹화 할 수 있습니다.

+0

OCT-2012를 얻으려면 일부 하위 문자열 후 및 하위 문자열 전에 연결된 그룹을 사용하여 그룹화 할 수 있어야합니다. 그러나 당신의 문제는 분류하는 것보다 낫습니다. –

+0

* "날짜 문자열은 다음과 같습니다. Thu, 4 Oct 2012 10:53:38 + 0200'"* - 그게 바로 문제입니다. 왜 거룩한 모든 사람들의 이름으로이 완전히 죽은 데이트 형식을 사용합니까? (Ranting, 미안 해요.) – Tomalak

답변

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을 사용했지만 요청하지 않았습니다.

+0

Hehe, 그렇습니다. 나는 그것을 줄 것이다. 감사! –

관련 문제