to address your doubt about why it is not enuf for me
to just use <xsl:copy-of select="Type/text()"/>
instead of recursion i have to further explain what i
am trying to do..
See, it's always much easier to answer questions given sample input and
desired output. You are correct that my one line xsl:copy can not add
the "_" between the items (In Xpath 2 this will be possible and the
whole stylesheet below could be replaced by a single xsl:value-of)
However you don't need recursion, just a small for-each loop over the
elements
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="x"/>
<xsl:template match="Root">
<xsl:for-each select="Elements/Element[(_at_)name=$x]/R/Type">
<xsl:value-of select="/Root/*[name()=current()]"/>
<xsl:if test="position()!=last()">_</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
$ saxon concat.xml concat.xsl x=El1
<?xml version="1.0" encoding="utf-8"?>R1_R2
davidc(_at_)DCARLISLE /c/tmp
$ saxon concat.xml concat.xsl x=El2
<?xml version="1.0" encoding="utf-8"?>R1
davidc(_at_)DCARLISLE /c/tmp
$ saxon concat.xml concat.xsl x=El3
<?xml version="1.0" encoding="utf-8"?>R1_R2_R3
which matches your desired output I believe.
--
http://www.dcarlisle.demon.co.uk/matthew
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list