Subject: [xsl] Re: msxsl:script and selectSingleNode problem From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Fri, 3 Oct 2003 22:50:45 +0200 |
Your Javascript function is: > function init(itemNode) > { > if( !itemNode.length) return ""; > > var val = itemNode.item(0).selectSingleNode('book'); > > //var val = itemNode.item(0).firstChild; > > if(val!=null) > return val.text; > > return "Error"; > } and it is called from: > <xsl:template match="/"> > <xsl:call-template name="callInit"> > <xsl:with-param name="itemNode" select="."/> > </xsl:call-template> > </xsl:template> This statement: > var val = itemNode.item(0).selectSingleNode('book'); evaluates the XPath expression "book" and assigns the result to the variable "val". because "itemNode" is the root node (/), the XPath expression will not select anything. The only element child of the root is the "items" element. Change: > <xsl:with-param name="itemNode" select="."/> to: <xsl:with-param name="itemNode" select="*"/> Now you'll get the wanted result. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL "Murali Korrapati" <murali.korrapati@xxxxxxxxx> wrote in message news:D856C70D80A2394F990DCDBF52F6E6CB02F518@xxxxxxxxxxxxxxxxxxxxx > Hi, > I am getting this strange problem. Let me give my xml and script function before I explain my problem. > > my xml: > > <Items> > <book>My book Title</book> > <pencil>My pencil length</pencil> > <pen>My pen color</pen> > </items> > > > my xslt: > <xsl:stylesheet version="1.0" xmlns="" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scrdt="urn:reval-com:scripts:datatypes"> > <xsl:template match="/"> > <xsl:call-template name="callInit"> > <xsl:with-param name="itemNode" select="."/> > </xsl:call-template> > </xsl:template> > <xsl:template name="callInit"> > <xsl:param name="itemNode"/> > <xsl:value-of select="scrdt:init($itemNode)"/> > </xsl:template> > <msxsl:script language="JScript" implements-prefix="scrdt"><![CDATA[ > function init(itemNode) > { > if( !itemNode.length) return ""; > > var val = itemNode.item(0).selectSingleNode('book'); > > //var val = itemNode.item(0).firstChild; > > if(val!=null) > return val.text; > > return "Error"; > } > ]]></msxsl:script> > > </xsl:stylesheet> > > > So my problem is, when ever I transform my xml with this template, it is printing "Error". It seems like it is not able to get to "book" node when I use selectSingleNode("book"). But variety is when ever I access it as .firstChild, it is recognizing the node and printing the correct value. > > I have no idea what is going on there. Any leads will be appreciated. > > > ~Mur > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] msxsl:script and selectSingle, Murali Korrapati | Thread | RE: [xsl] msxsl:script and selectSi, Michael Kay |
[xsl] Re: problem - generating XML , Dimitre Novatchev | Date | RE: [xsl] Re: msxsl:script and sele, Murali Korrapati |
Month |