Nathan,
To summarize, the key concept you need to master here is "context". This 
is actually not just an XSLT concept but also an XPath concept. If you 
do some homework on context in XPath and then in XSLT, what Michele told 
you will start to seem obvious.
This has all to do with path traversals -- seeing the document as a 
structure (tree) of nodes, and navigating that structure with a path. 
What Liam, Ken and Michele have all pointed out is that you need a 
relative path (which starts from the current context -- each different 
'language' element) not an absolute path (which starts from the top of 
the document and which always gets the same nodes back). "Context" means 
where you are in the document when you start a path (or indeed along its 
way) -- something the processor keeps track of for you, but which you 
need to be aware of and learn to see (in your mind's eye), because it 
directly affects how you design your paths to work (where they go, how 
they get there and when they end up nowhere).
It's also key for XSLT, as you'll learn when you instruct yourself in 
Lesson #2: Templates. For example, in your case the normal thing would 
be to have this in your stylesheet, or something like it:
<xsl:template match="langmaterial/language">
  <marc:datafield tag="041" ind1=" " ind2=" ">
    <marc:subfield code="a">
      <xsl:value-of select="normalize-space(@langcode)"/>
    </marc:subfield>
  </marc:datafield>
</xsl:template>
With this in place, and assuming that other templates are also in place 
and designed correctly, you don't have to worry about "looping" or even 
about whether the 'langmaterial' element is there or how many 'language' 
elements there are (so: no testing for them; that is done implicitly by 
template matching). If they are there, they will be handled the way the 
template says, and if they're not, they won't be (and nothing disastrous 
will happen either).
Cheers,
Wendell
======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
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
======================================================================