[xsl] status list problem

Subject: [xsl] status list problem
From: Ahmad J Reeves <ahmad@xxxxxxxxxxxxxx>
Date: Thu, 18 Apr 2002 20:02:40 +0100
Hi,

My xslt stylesheet below:-

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

  <xsl:output method="text"/>

  <xsl:key name="kByID" match="DIRECT | LOCAL | GLOBAL | ADMIN"
use="CHARACTER_ID"/>
 
  <xsl:variable name="vUniqueCharacters"
                  select="LOG/*[generate-id()
                                    =
                                     generate-id(key('kByID',
                                                      CHARACTER_ID
                                                     )[1]
                                                 )
                                    ]"/>

    <xsl:variable name="NL" select="'&#xA;'"/>

  <xsl:template match="/">
  
  <xsl:value-of select="concat('Number of Unique Characters','
',count($vUniqueCharacters))"/>
  <xsl:value-of select="$NL"/>
  <xsl:value-of select="$NL"/>
  
   <xsl:for-each select="$vUniqueCharacters">
   
    
    	<xsl:if test="not(CHARACTER_ID[. = preceding::CHARACTER_ID])">

                                
         		<xsl:value-of select="concat('STATUS ',CHARACTER_STATUS,
                                   '  ',
                                   count(key('kByID',CHARACTER_ID)),
                                   
                                   $NL
                                   )"/>
       </xsl:if>                            
     
    </xsl:for-each>
 
 </xsl:template>

</xsl:stylesheet>


Is supposed to produce a list of unique character statuses and how many
occurences of them there are.

With the xml test below I get: -

Number of Unique Characters 4

STATUS  6   3
STATUS  4   1
STATUS  3   1
STATUS  1   1


Instead of

Number of Unique Characters 4

STATUS  6   1
STATUS  4   1
STATUS  3   1
STATUS  1   1

As my dodgy 	<xsl:if test="not(CHARACTER_ID[. = preceding::CHARACTER_ID])">
isn't removing the duplicates.

merciful answers gladly accepted ;_)

A.

XML
--------------------------------------
<LOG>
   <DIRECT>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461910 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> EMOTE </MESSAGE_TYPE>
      <CHARACTER_ID> 10010 </CHARACTER_ID>
      <CHARACTER_STATUS> 6 </CHARACTER_STATUS>
      <LOCATION_ID> 24488 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 18735 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 6 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 10433
</TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> %#NF#%wthinks %y%l. o O ( %w%lThinks of a new
prefix/suffix.%y%l ) </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:27:50 +0000' </TIME>
   </DIRECT>
   <LOCAL>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461911 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> EMOTE </MESSAGE_TYPE>
      <CHARACTER_ID> 10010 </CHARACTER_ID>
      <CHARACTER_STATUS> 6 </CHARACTER_STATUS>
      <LOCATION_ID> 24488 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 23212 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 3 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 293 </TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> %#NF#%wthinks %y%l. o O ( %w%lThinks of a new
prefix/suffix.%y%l ) </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:27:50 +0000' </TIME>
   </LOCAL>
   <ADMIN>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461912 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> EMOTE </MESSAGE_TYPE>
      <CHARACTER_ID> 10010 </CHARACTER_ID>
      <CHARACTER_STATUS> 6 </CHARACTER_STATUS>
      <LOCATION_ID> 24488 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 16783 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 5 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 39784
</TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> %#NF#%wthinks %y%l. o O ( %w%lThinks of a new
prefix/suffix.%y%l ) </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:27:50 +0000' </TIME>
   </ADMIN>
   <GLOBAL>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461913 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> EMOTE </MESSAGE_TYPE>
      <CHARACTER_ID> 19910 </CHARACTER_ID>
      <CHARACTER_STATUS> 4 </CHARACTER_STATUS>
      <LOCATION_ID> 24488 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 35257 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 4 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 293 </TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> %#NF#%wthinks %y%l. o O ( %w%lThinks of a new
prefix/suffix.%y%l ) </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:27:50 +0000' </TIME>
   </GLOBAL>
   <DIRECT>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461994 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> STD </MESSAGE_TYPE>
      <CHARACTER_ID> 88010 </CHARACTER_ID>
      <CHARACTER_STATUS> 3 </CHARACTER_STATUS>
      <LOCATION_ID> 31132 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 14211 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 5 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 3726
</TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> "lol I found my own ways to amuse myself tho...like when
liv tyler went 'ive got to take him to my father' im like yayaay were
going to se steve tylerrrrr!!! " </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:28:08 +0000' </TIME>
   </DIRECT>
   <DIRECT>
      <COMMUNICATION_TYPE> PAGETELL </COMMUNICATION_TYPE>
      <Invoc_serial> 29 </Invoc_serial>
      <Serial> 19461995 </Serial>
      <USAGE> TELL </USAGE>
      <MESSAGE_TYPE> STD </MESSAGE_TYPE>
      <CHARACTER_ID> 15444 </CHARACTER_ID>
      <CHARACTER_STATUS> 1 </CHARACTER_STATUS>
      <LOCATION_ID> 24488 </LOCATION_ID>
      <TARGET_CHARACTER_ID> 12969 </TARGET_CHARACTER_ID>
      <TARGET_CHARACTER_STATUS> 3 </TARGET_CHARACTER_STATUS>
      <TARGET_CHARACTER_LOCATION_ID> 111 </TARGET_CHARACTER_LOCATION_ID>
      <MESSAGE> "lol I found my own ways to amuse myself tho...like when
liv tyler went 'ive got to take him to my father' im like yayaay were
going to se steve tylerrrrr!!! " </MESSAGE>
      <TIME> 'Tue, 01 Jan 2002 20:28:08 +0000' </TIME>
   </DIRECT>
 </LOG>






 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread