1.0

2017-10-16 6 views
0

여기 Muenchian 그룹화 작업을 수행하는 방법에 대한 예제 무리가 있다는 것을 알고 있지만, 나는 꽤 많은 시간 동안 노력과 그것을 얻을 수 있었다를 havent되었다.1.0

나는 Muenchian 그룹화를 사용하여 <title> 값을 기준으로 그룹 <spec>에 노력하고 있습니다.

나는 XSLT 1.0을 사용하고 있습니다.

XML :

<product> 
    <specifications> 
     <spec> 
      <title>A</title> 
      <value>val1</value> 
     </spec> 
     <spec> 
      <title>A</title> 
      <value>val2</value> 
     </spec> 
     <spec> 
      <title>B</title> 
      <value>val3</value> 
     </spec> 
     <spec> 
      <title>C</title> 
      <value>val4</value> 
     </spec> 
     <spec> 
      <title>C</title> 
      <value>val5</value> 
     </spec> 
     <spec> 
      <title>D</title> 
      <value>val6</value> 
     </spec> 
    <specifications> 
</product> 

구인 결과 :

<group> 
    <title>A</title> 
    <values> 
     <value>val1</value> 
     <value>val2</value> 
    </values> 
</group> 
<group> 
    <title>B</title> 
    <values> 
     <value>val3</value> 
    </values> 
</group> 
<group> 
    <title>C</title> 
    <values> 
     <value>val4</value> 
     <value>val5</value> 
    </values> 
</group> 
<group> 
    <title>D</title> 
    <values> 
     <value>val6</value> 
    </values> 
</group> 
+2

읽기 http://www.jenitennison.com/xslt/grouping/muenchian.html을 달성하고 그것을 조정하는 방법 필요합니다. –

+2

무엇을 시도 했습니까? XSLT 스타일 시트를 제공하지 않으면 XSLT 프로세서가 Muenchian 그룹화를 올바르게 수행하지 못한다는 점을 감안할 때 상당히 유용합니다. 당신이 시도한 것을 보여주지 않으면 스택 오버플로에 대한 많은 질문 응답자가 다른 사람들이 당신을 위해 당신의 일을 처리하려고한다고 가정 할 것입니다. 불공평합니다. 알아요.하지만 지금까지 제공 한 모든 증거와 호환됩니다. –

답변

0

<title>에 대한 그룹 키를 정의합니다.

<xsl:key name="kTitle" match="spec" use="title" /> 

XSL은 원하는 출력

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" /> 
    <xsl:strip-space elements="*" /> 

    <xsl:key name="kTitle" match="spec" use="title" /> 

    <xsl:template match="spec[generate-id() = generate-id(key('kTitle', title)[1])]"> 
     <group> 
      <xsl:copy-of select="title" /> 
      <values> 
       <xsl:copy-of select="key('kTitle', title)/value" /> 
      </values> 
     </group> 
    </xsl:template> 

    <xsl:template match="spec" /> 
</xsl:stylesheet> 

출력

<group> 
    <title>A</title> 
    <values> 
     <value>val1</value> 
     <value>val2</value> 
    </values> 
</group> 
<group> 
    <title>B</title> 
    <values> 
     <value>val3</value> 
    </values> 
</group> 
<group> 
    <title>C</title> 
    <values> 
     <value>val4</value> 
     <value>val5</value> 
    </values> 
</group> 
<group> 
    <title>D</title> 
    <values> 
     <value>val6</value> 
    </values> 
</group>