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(_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>
--~--