2016-07-13 2 views
0

아래의 그림과 같이 키인 Muenchian 그룹을 사용하여 city1 또는 city2 또는 city3에서 중복을 제거 할 수 있습니다. 하지만xslt를 사용할 때 중복을 제거하는 방법

<test> 
<records> 
<city1>Sweden</city1> 
<country1>value1<country1> 
<town1>value2<town1> 
<city2>Paris</city2> 
<country2>value1<country2> 
<town2>value2<town2> 
<city3>London</city3> 
<country3>value1<country3> 
<town3>value2<town3> 
</records> 
<records> 
<city1>Sweden</city1> 
<country1>value1<country1> 
<town1>value2<town1> 
<city2>Frankfut</city2> 
<country2>value1<country2> 
<town2>value2<town2> 
<city3>NEwYork</city3> 
<country3>value1<country3> 
<town3>value2<town3> 
</records> 
<records> 
<city1>SFO</city1> 
<country1>value1<country1> 
<town1>value2<town1> 
<city2>London</city2> 
<city2>Frankfut</city2> 
<country2>value1<country2> 
<city3>Frankfut</city3> 
<country3>value1<country3> 
<town3>value2<town3> 
</records> 
</test> 

출력이 city1

에서 중복을 제거하기 위해 사용

Row|Add|Sweden|value1|value2 
Row|Add|London|value1|value2 
Row|Add|NewYork|value1|value2 
Row|Add|SFO|value1|value2 

코드되어야 XML 모든 city1, 시티 2와 시티 3 다음

에 반복하여 중복을 제거 할 수 있습니다 아니다

<xsl:key name="Keycity" match="//test/records" use="city1" /> 
<xsl:for-each select="//records[generate-id(.) = generate-id(key('Keycity', city1))]"> 
     <xsl:sort select="."/> 
     <xsl:variable name="city1" select="."/> 

     <Row Action="ADD"> 
      <xsl:value-of select="city1" /> 
     </Row> 
     </xsl:if> 
    </xsl:for-each> 
+0

XSLT가 예상 출력 (XML 대 텍스트)과 일치하지 않습니다. 그리고 왜 코드에 ''이 고아가 되었습니까? –

답변

0

키를 다음과 같이 정의하십시오 :

<xsl:key name="Keycity" match="city1 | city2 | city3" use="." /> 

그런 다음 수행이 가정

<xsl:for-each select="(records/city1 | records/city2 | records/city3)[generate-id(.) = generate-id(key('Keycity', .))]"> 
    <xsl:sort select="."/> 
    <Row Action="ADD"> 
     <xsl:value-of select="." /> 
    </Row> 
</xsl:for-each> 

당신은 test 루트 요소의 맥락에 있습니다.

+0

이것은 완벽하게 작동합니다. 그러나 각 행에 더 많은 값을 추가해야합니다 (질문에 대한 결과를 업데이트했습니다). 이것을 위해 나는 무엇이 ""인지 알 필요가있다. in (예 : city1 또는 city2). – user3067170

+0

나는 당신이 무슨 뜻인지 전혀 모르겠다. 이 값들은 어디에서 오는 것입니까? 왜 그들은 "스웨덴"에만 붙어 있습니까? –

+0

정말 죄송합니다. 나는 지금 xml과 출력을 업데이트했다. – user3067170

관련 문제