2016-11-09 3 views
0

다음 xml에서 "number"의 처음 세 자리는 결과 출력의 "number"요소를 그룹화하는 데 사용할 수 있습니다. 그러나 나는 아이디어가 없다?문자열의 처음 세 자리 숫자를 사용하여 출력에서 ​​루프 및 그룹 요소를

입력 이 [입력하고 원하는 출력 참조] 노호 [1]

<data> 
<InputElemenmts> 
    <Element11> 
     <key>73004</key> 
     <number>001001</number> 
    </Element11> 
    <Element11> 
     <key>7300465</key> 
     <number>002001</number> 
    </Element11> 
    <Element11> 
     <key>730046</key> 
     <number>003001</number> 
    </Element11> 
    <Element11> 
     <key>730046</key> 
     <number>003002</number> 
    </Element11> 
    <Element11> 
     <key>730046</key> 
     <number>003003</number> 
    </Element11> 
    <Element11> 
     <key>730049</key> 
     <number>004001</number> 
    </Element11> 
    <Element11> 
     <key>730046</key> 
     <number>005001</number> 
    </Element11> 
    <Element11> 
     <key>730040</key> 
     <number>006001</number> 
    </Element11> 
    <Element11> 
     <key>730040</key> 
     <number>006002</number> 
    </Element11> 
    <Element11> 
     <key>730041</key> 
     <number>007001</number> 
    </Element11> 
    <Element11> 
     <key>730042</key> 
     <number>008001</number> 
    </Element11> 
</InputElemenmts> 
<OutputElemenmts> 
    <result> 
     <key>7300462</key> 
     <number>001001</number> 
    </result> 
    <result> 
     <key>7300465</key> 
     <number>002001</number> 
    </result> 
    <result> 
     <key>73004</key> 
     <Element> 
      <number>003001</number> 
      <number>003002</number> 
      <number>003003</number> 
     </Element> 
    </result> 
    <result> 
     <key>730049</key> 
     <number>004001</number> 
    </result> 
    <result> 
     <key>730046</key> 
     <number>005001</number> 
    </result> 
    <result> 
     <key>730040</key> 
     <Element> 
      <number>006001</number> 
      <number>006002</number> 
     </Element> 
    </result> 
    <result> 
     <key>730041</key> 
     <number>007001</number> 
    </result> 
    <result> 
     <key>730042</key> 
     <number>008001</number> 
    </result> 
</OutputElemenmts> 

+2

안녕하십니까 :-) 우리는 코드 작성 서비스가 아닙니다. 시도한 것은 무엇이고 코드의 문제는 어디에 있습니까? 질문을 편집하여 노력을 보여주십시오. –

+0

안녕하세요 스테파니 - Unfortunatelly 내가 어떻게 해야할지 모르기 때문에 나는 많이하지 않았다! 어떤 생각이 들었을 때, 나는 여기에 없었습니다! for-each 루프를 시도했지만 해결책을 찾지 못했고 게시 할 내용이 없습니다. ( – henry

+0

'내가 원하는 바가 충분히 명확합니까? – henry

답변

-1

이 내가 이해 한 것입니다 만 아마 입력 XML 내 원하는 출력을 참조하십시오 너 뭘 원하는거야 ??

<!-- find the last of Element11 with any key --> 
    <xsl:template match="Element11[not(following::Element11[key = current()/key])]"> 
     <result> 
     <key><xsl:value-of select="key"/></key> 
     <xsl:choose> 
     <!-- are there more than one with this key? --> 
     <xsl:when test="preceding-sibling::Element11[key = current()/key]"> 
      <!-- if yes it seems you want an Element wrapper --> 
      <Element> 
      <xsl:for-each select="preceding-sibling::Element11[key = current()/key]/number"> 
       <number><xsl:value-of select="."/></number> 
      </xsl:for-each> 
      <!-- the current one --> 
      <number><xsl:value-of select="number"/></number> 
      </Element> 
     </xsl:when> 
     <xsl:otherwise> 
      <!-- only the current one --> 
      <number><xsl:value-of select="number"/></number> 
     </xsl:otherwise> 
     </xsl:choose> 
     </result> 
    </xsl:template> 

    <xsl:template match="Element11"/> 
+0

이것은 좋은 그룹화 방법이 아닙니다. –

+0

맞았지 만 그 질문이 그 좋은 에테르는 아니 었어 ... –