2013-04-08 3 views
0

나는 Muenchian Grouping Method을 참조로이 기사를 다룰 예정이다.Muencian 그룹화 방법을 사용하는 그룹 내의 XSLT 필터 고유 노드

내 문제는 각 그룹 내에서 <forename> 노드의 일부 값을 복제 할 수 있고 고유 값을 필터링 할 수 있습니다. forename[not(.=preceding-sibling::forename)] 선택 기준을 적용 해 보았습니다.하지만 출력물에 중복 된 내용이 표시되면서 작동하지 않습니다.

XSLT 다음은 테스트합니다 (위의 기사에서 추가 필터가 적용된 "격리 된"줄과 기본적으로 동일 함).

분명히 잘못되었습니다. 여기에 어떤 문제가 있습니까? 그냥 추출 | 내가 전체 이름 (뒤따라야 성)의 다른 Muenchian 그룹화하고있어 각 surname 그룹 내에서

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output indent="yes" method="text"/> 
    <xsl:key name="contacts-by-surname" match="contact" use="surname" /> 
    <xsl:template match="records"> 
     <xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]"> 
      <xsl:sort select="surname" /> 
      <xsl:value-of select="surname" /> 
      <xsl:for-each select="key('contacts-by-surname', surname)"> 
       <xsl:sort select="forename" /> 


       <xsl:value-of select="forename[not(.=preceding-sibling::forename)]" /> 


      </xsl:for-each> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

답변

1

당신은 여기에 또 다른 키

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output indent="yes" method="text"/> 
    <xsl:key name="contacts-by-surname" match="contact" use="surname" /> 
    <xsl:key name="contacts-by-full-name" match="contact" use="concat(surname, '|', forename)" /> 
    <xsl:template match="records"> 
     <xsl:for-each select="contact[count(. | key('contacts-by-surname', surname)[1]) = 1]"> 
      <xsl:sort select="surname" /> 
      <xsl:value-of select="surname" /> 
      <xsl:for-each select="key('contacts-by-surname', surname) 
       [count(. | key('contacts-by-full-name', 
           concat(surname, '|', forename'))[1]) = 1]"> 
       <xsl:sort select="forename" /> 
       <xsl:value-of select="forename" /> 
      </xsl:for-each> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

와 2 단계 그룹화 할 수 그 성을 가진 접촉의 세트 내의 각 forename의 첫번째 경우.

+0

은 매력처럼 작동합니다. 이제 나는 그것을보고 이해해야 만합니다. 고마워요! –