[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Passing xml nodes to a function

Subject: RE: Passing xml nodes to a function
From: "Bansal, Rabinder" <RBansal@xxxxxxxxxxxxxxx>
Date: Thu, 10 Aug 2006 15:17:30 +0100
xsl node function
Hi David
     Thanks for your suggestion. It seems to extract the data okay but the
output is not correct. What I am getting at the moment is the following:-

Joe Mrs JEANETTE CHANDLER 1960-01-01 JH876329H M S 000001 test@xxxxxxxxx H

    As you can see it does not get the node name or split the text into
different table data cells. Your code that you send me looks fine, so where is
it going wrong?

     		<table style="position:relative; left:30px;">

    		    <xsl:apply-templates select=".//response/*/response/*"

   		   <xsl:template match="*" mode="table">
		       <td><xsl:value-of select="name()"/></td>
		       <xsl:if test="not(*)"><td><xsl:value-of select="."/></td></xsl:if>

This is the xml:
	<welcomeName>Joe </welcomeName>
	<email>test@xxxxxxxxx </email>

Look forward to the solution.

-----Original Message-----
From: David Carlisle [mailto:davidc@xxxxxxxxx]
Sent: 09 August 2006 16:19
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  Passing xml nodes to a function

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

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

		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

I think you want something like
    <xsl:apply-templates" select=".//response/*/response/*" mode="table"/>

<xsl:template match="*" mode="table">
<td><xsl:value-of select="name()"/></td>
<xsl:if test="not(*)"><td><xsl:value-of select="."/></td></xsl:if>


********************** N O T I C E *********************************

This message and any attachments is intended only for the individual or
company to which it is addressed and may contain
information which is privileged, confidential or prohibited from disclosure or
unauthorised use. If the recipient of this
transmission is not the intended recipient, or the employee or agent
responsible for delivering such materials to the
intended recipient, you are hereby notified that any use, any form of
reproduction, dissemination, copying, disclosure,
modification, distribution and/or publication of this e-mail message or its
attachments other than by it's intended
recipient is strictly prohibited by the sender. If you have received it in
error, please notify us immediately by
telephone on the number above and destroy the message and all copies in your

International Financial Data Services (UK) Ltd is authorised and regulated by
the Financial Services Authority.

This footnote also confirms that this email message has been swept by
MIMEsweeper for the presence of computer viruses.


Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.