[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: text() & childNodes[0] of xPath
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: 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.
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|