Subject: Re: Passing xml nodes to a function
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 9 Aug 2006 16:19:27 +0100
|
I suspect that ypu don't want to use call-template and named templates
at all here, and just use apply-templates which would simplify your code
greatly.
It's not clear what output you want, you suggested code allways makes
table rows tr containing a single td but you showed an indented output
teleNumbers
telList
numbers
teleType H
teleNumber 0145454545
what html do you intend here?
It's not clear how your initial selection .//response/*/response/*" fits
with your input document (the sample you showed didn't have a response
element but I'm assuming that what you showed was teh content of a
typical <response> ?
call-template does not change the current node so as you recurse along
your $children the current node always stays teh same so
<xsl:value-of select="name()"/> will produce the same text at each
stage,
I think you want something like
<table>
<xsl:apply-templates" select=".//response/*/response/*" mode="table"/>
</table>
<xsl:template match="*" mode="table">
<tr>
<td><xsl:value-of select="name()"/></td>
<xsl:if test="not(*)"><td><xsl:value-of select="."/></td></xsl:if>
</tr>
</xsl:template>
David
|