Subject: RE: [xsl] text() & childNodes[0] of xPath From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 10 Mar 2010 07:45:59 -0000 |
One path selects the element node, the other selects its only text node child. If an element has a single text node child, then the string-value of the element is the same as the string-value of the text node, so the queries have the same effect. However, if the element also contained a comment in the middle of the text: <price>30<!-- illegible, might be 39 -->.00</price> then getting the string value of the element would give the right answer, whereas using text() would give you two text nodes - chances are your code would ignore all but the first. Even though this scenario is unlikely in your book catalog, it is legal, and I would therefore recommend not using the "/text()" suffix in the path - it makes your code simpler and more robust. Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay > -----Original Message----- > From: Sanjaya Liyanage [mailto:sanjayacl@xxxxxxxxx] > Sent: 10 March 2010 06:33 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] text() & childNodes[0] of xPath > > Hi, > While I am going through the examples of Xpath @ w3schools > site (http://www.w3schools.com/xpath/xpath_examples.asp ) I > came across this doubt. > <?xml version="1.0" encoding="ISO-8859-1"?> > > <bookstore> > > <book category="COOKING"> > <title lang="en">Everyday Italian</title> > <author>Giada De Laurentiis</author> > <year>2005</year> > <price>30.00</price> > </book> > > <book category="CHILDREN"> > <title lang="en">Harry Potter</title> > <author>J K. Rowling</author> > <year>2005</year> > <price>29.99</price> > </book> > > </bookstore> > > The above xml file is the resource. > > 1)path=/bookstore/book/price/text() > > and the part of the script is given below. > > var nodes=xml.selectNodes(path); > > for (i=0;i<nodes.length;i++) > { > document.write(nodes[i].nodeValue); > document.write("<br />"); > } > > 2)path=/bookstore/book/price > > and the part of the script is given below. > > var nodes=xml.selectNodes(path); > > for (i=0;i<nodes.length;i++) > { > document.write(nodes[i].childNodes[0].nodeValue); > document.write("<br />"); > } > } > > In both the above cases the output is same.So I want to know > whether the above two methods are same in functionality wise > or are there any significant different between these two methods? > > Thanks > Sanjaya.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] text() & childNodes[0] of xPa, Sanjaya Liyanage | Thread | [xsl] xslt extensions accessing spr, Robby Pelssers |
Re: [xsl] XML access control by cus, Jacobus Reyneke | Date | RE: [xsl] <xsl:sort> discarting all, Michael Kay |
Month |