2013-05-15 3 views
0

나는이 XML이 : hr_117의 도움을Muenchian XML 그룹을 확장하는 방법은 무엇입니까?

<events> 
    <event name="Christmas" attendees="1"/> 
    <event name="Halloween" attendees="3"/> 
    <event name="Easter" attendees="2"/> 
    <event name="Easter" attendees="1"/> 
</events> 

감사합니다, 나는이 일을 관리 :

날이 출력을 제공
<xsl:template match="data"> 
    <xsl:apply-templates select="events"/> 
</xsl:template> 

<xsl:key name="events-by-name" match="events/event" use="@name" /> 

<xsl:template match="events"> 
<xsl:for-each select="event[count(. | key('events-by-name', @name)[1]) = 1]"> 
    <p> 
     <xsl:value-of select="concat(@name,': ')" /> 
     <xsl:value-of select="count(key('events-by-name', @name))" /> 
     <xsl:text> booking(s)</xsl:text>   
    </p> 
</xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

:

Christmas: 1 booking(s) 
Halloween: 1 booking(s) 
Easter: 2 booking(s) 

그러나 attendees도 어떻게 계산해야합니까?

아무도 도와 줄 수 있습니까?

감사합니다.

답변

3

어때? sum 메서드로 시도해 보았고 누적 된 값을 볼 수 있었으며 테스트를 위해 몇 가지 추가 요소를 추가했습니다.

<xsl:value-of select="concat(@name,': ')"/> 
<xsl:value-of select="count(key('events-by-name', @name))"/> 
<xsl:text> booking(s), </xsl:text> 
<xsl:value-of select="sum(key('events-by-name', @name)/@attendees)"/> 
<xsl:text> attendee(s)</xsl:text> 
+1

예. 괜찮을 것 같습니다. –

+0

그게 효과가! 도와 주셔서 정말로 고맙습니다. 그러나 실제 XML이 위의 단순성 때문에 약간 다른 점 때문에 한 번만 더 붙어 있습니다. 나는 [이것을위한 또 다른 스레드를] 열기로 결정했다. (http://stackoverflow.com/questions/16584221/how-to-improve-my-muenchian-grouping-xslt). 이 XSLT 물건은 정말로 나를 두통의 원인이됩니다. 다행 이네. 너희들이 나를 도와 줄 수있어. – Tintin81