Subject: [xsl] ClassCastException From: alana@xxxxxxxxxx Date: Fri, 12 Dec 2003 11:08:46 +0530 |
thanks David this works but my problem still exists ************************************************************************************ //XML <DATA> <component id="description_of_plates" type="question"> <property id="label"> <value>Description of Plates:</value> </property> <property id="help"/> <property id="tooltip"/> <property id="format"> <value>textbox</value> </property> <property id="cid"></property> <component id="description_of_plates" type="answer"> <property id="ans"> <value></value> </property> </component> </component> <component id="description_of_seats" type="question"> <property id="label"> <value>Description of Seats:</value> </property> <property id="help"/> <property id="tooltip"/> <property id="format"> <value>textbox</value> </property> <property id="cid"></property> <component id="description_of_seats" type="answer"> <property id="ans"> <value></value> </property> </component> </component> </DATA> ************************************************************************************ //XSL <xsl:call-template name="getvalue"> <xsl:with-param name="node"> <xsl:call-template name="getComponentfortype"> <xsl:with-param name="rootnode"> <xsl:value-of select="/DATA/component"/> </xsl:with-param> <xsl:with-param name="typename">answer</xsl:with-param> </xsl:call-template> </xsl:with-param> <xsl:with-param name="selectid">ans</xsl:with-param> <xsl:with-param name="attr"> <xsl:value-of select="."/> </xsl:with-param> </xsl:call-template> <!--This would return the node's unique path in the xml --> <xsl:template name="getComponentfortype"> <xsl:param name="rootnode"/> <xsl:param name="typename"/> <xsl:for-each select="$rootnode//component"> <xsl:if test="@type = $typename"> <xsl:call-template name="node:xpath"> <xsl:with-param name="node" > <xsl:value-of select="$rootnode/component/*[name(.)=name()]"></xsl:value-of> <!--<xsl:value-of select="/DATA/component/component"></xsl:value-of>--> <!--this works --> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:for-each> </xsl:template> <!-- this would return the value for a given property for a given component--> <xsl:template name="getvalue" match="Component"> <xsl:param name="node"/> <xsl:param name="selectid"/> <xsl:param name="attr"/> <xsl:for-each select="$node/property"> <xsl:if test="@id = $selectid"> <xsl:value-of select="./value"></xsl:value-of> </xsl:if> </xsl:for-each> </xsl:template> ************************************************************************************ The template "getComponentfortype" would return the nodepath in String format. I wanted to use this as the node to getvalue function to return the property value for that component. But i get the classCastException . I hoped to make the two templates generic.how do i correct this. regards Alan ----------------------------------------------------------------------------------------------------------------------------- Alan Andrade |Off: Mastek SDF 7, SEEPZ | email: alana@xxxxxxxxxx <mailto:alana@xxxxxxxxxx> | Tel: 56952222 ext 1582 ----------------------------------------------------------------------------------------------------------------------------- -----Original Message----- From: David Carlisle [mailto:davidc@xxxxxxxxx] Sent: Thursday, December 11, 2003 5:23 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] ClassCastException line 17 (mentioned in teh error) is <xsl:for-each select="$node[1]/ancestor-or-self::*"> that expression will only be valid if the variable $node contains a node set but you are calling it as: <xsl:call-template name="node:xpath"> <xsl:with-param name="node" > <xsl:value-of select="$nodew"/> </xsl:with-param> </xsl:call-template> so teh parameter will never be a node set it will be a result tree fragment corresponding to a root node with a single text node child with value teh string value of the parameter nodew. Most of the parameters are unused so you could change that to <xsl:template name="getvalue2" > <xsl:param name="nodew"/> <xsl:call-template name="node:xpath"> <xsl:with-param name="node"select="$nodew"/> </xsl:call-template> But nodew is not a node either, depite its name. It is aanother result tree fragment with a string value that looks like an xpath but is not a path to the system, its just a string. <xsl:with-param name="nodew"> /DATA/component/<xsl:value-of select="$reqnode"/> </xsl:with-param> You probably want <xsl:with-param name="nodew" select="/DATA/component/*[name()=$reqnode]"/> so that your parameter does contain a node set, although then this will always be a set of element nodes, so most of the testing in the node:xpath template is a no-op. David -- http://www.dcarlisle.demon.co.uk/matthew ________________________________________________________________________ This e-mail has been scanned for all viruses by Star Internet. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list MASTEK "Making a valuable difference" Mastek in NASSCOM's 'India Top 20' Software Service Exporters List. In the US, we're called MAJESCO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Opinions expressed in this e-mail are those of the individual and not that of Mastek Limited, unless specifically indicated to that effect. Mastek Limited does not accept any responsibility or liability for it. This e-mail and attachments (if any) transmitted with it are confidential and/or privileged and solely for the use of the intended person or entity to which it is addressed. Any review, re-transmission, dissemination or other use of or taking of any action in reliance upon this information by persons or entities other than the intended recipient is prohibited. This e-mail and its attachments have been scanned for the presence of computer viruses. It is the responsibility of the recipient to run the virus check on e-mails and attachments before opening them. If you have received this e-mail in error, kindly delete this e-mail from all computers. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] ClassCastException, Michael Kay | Thread | Re: [xsl] ClassCastException, David Carlisle |
Re: [xsl] Clearing up XSL-speak, JCS | Date | RE: [xsl] value-of vs copy-of, was, David . Pawson |
Month |