Dear Robert,
You emailed me off-list on this thread. (I don't know who else you 
may have asked.) I'm replying, but cc:ing the list.
First, your problem: XPath expressions are evaluated relative to a 
context node, and since your template is matching the root, that's 
the context node, so the key is not being called with any values.
Specifically, when you say
<xsl:for-each
 select="key('tar_by_filingtype', concat(FilingType, ' ', AgencyName))">
you are really saying (XPath long syntax):
<xsl:for-each
 select="key('tar_by_filingtype',
         concat(child::FilingType, ' ', child::AgencyName))">
and the XPath "child::FilingType" and "child::AgencyName" are 
evaluated relative to the context, which here is the root node (since 
that's what you matched). The root has no such children, so the value 
sent to the key function is simply " " -- which gets you no nodes back.
To fix this, you need to iterate over nodes which will provide the 
context you need. Something like this:
<xsl:for-each
 select="//MonthlyTARList">
  <xsl:sort select="FilingType"/>
  <xsl:if test="count(.|key('tar_by_filingtype', concat(FilingType, 
' ', AgencyName))[1])=1">
  <!-- tests if the current node selected in the for-each is the
       first node returned by the key with its values -->
    ...
Note: this test could also take this form --
test="generate-id() =
      generate-id(key('tar_by_filingtype',
                      concat(FilingType, ' ', AgencyName))[1])"/>
... which I believe is just a bit more legible for beginners as a way 
of testing whether one node is the same as another.
The equality test is the same as saying, in long syntax
test="generate-id(self::node()) = generate-id(
  key('tar_by_filingtype',
      concat(child::FilingType, ' ', child::AgencyName))[1])"/>
... which is even more explicit at the price of being less legible 
(unless you don't know XPath in which case you're faking it either way).
More basically, what you're missing appears to me to be the basics of 
the XSLT processing model -- the design rationale behind the language 
that explains why we even bother using templates at all. Unknowing of 
this, you also don't know about critical features of the language 
like evaluation of XPath relative to a context node, or even what a 
context node is. Until you master this, you'll never be able to do 
more than trivial things with the language -- and when you get into 
things like grouping, not even that.
Also, I'm sorry to say you've broken a couple of rules of list etiquette:
1. You've mailed me off list. Contributors to XSL-List are donating 
their time and expertise to a public good. You should respect that by 
doing the same -- if you can't help others by offering solutions and 
explanations, then ask good questions (or ask bad questions well); in 
any case, don't impose on individuals (ask the entire group). On the 
list, experts and novices help each other and look over each others' 
shoulders to mind how it's all going. You're going outside that 
process. (Note also that more than one expert posting to the list is 
also paid to give similar advice privately. By soliciting help off 
list you may be presuming to get for free what others are paying for.)
Note that this doesn't preclude off-list communication for other 
reasons than getting unoffered help.
2. You haven't included small but complete code samples, making it 
possible to diagnose the problem without opening external 
applications like web browsers and file editors. Often experts can 
spot problems very quickly; but having to dig in makes it tough for 
them. Once in a while, when a problem is particularly gnarly, we 
break this rule on purpose; but you hadn't gotten to that point yet 
(and indeed your mistake was a very common and basic one for a beginner).
As it happens, today I was in a good (or bad?) mood, so rather than 
just junking your email with a complaint, I decided to answer it and 
cc: the list.
Happy holidays,
Wendell
At 05:03 PM 12/20/2006, you wrote:
Thanks for your help, but what I'm I missing? Now none of the data is
displaying.
File:
http://tn.gov/sos/pub/tar/MonthlyTARList.xml
Stylesheet:
http://tn.gov/sos/pub/tar/MonthlyTAR.xsl
Robert Greene
Tennessee Department of State
Division of Publications
312 8th Ave. North, 8th Floor
Nashville, TN 37243
(615) 253-4571
FAX (615) 741-5133
http://www.tennessee.gov/sos
======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--