xpath - XML Path needed -
i have following xml file:
<?xml version="1.0" encoding="utf-8"?> <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> <book category="web"> <title lang="en">xquery kick start</title> <author>james mcgovern</author> <author>per bothner</author> <author>kurt cagle</author> <author>james linn</author> <author>vaidyanathan nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="web"> <title lang="en">learning xml</title> <author>erik t. ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> i need write xml path returns book published after 2003, category children , need display author , title of book? frustrating have in xpath wrote except missing author.
use following xpath expression:
/bookstore/book[@category="children" , year>2003]/*[name()="author" or name()="title"] here select every book category attribute equaling children , year node value more 2003. *[name()="author" or name()="title"] helps select specific children: author , title.
demo using xmllint tool:
$ xmllint input.xml --xpath '/bookstore/book[@category="children" , year > 2003]/*[name()="author" or name()="title"]' <title lang="en">harry potter</title> <author>j k. rowling</author> if want see values of author , title nodes, add /text() end of xpath expression:
$ xmllint input.xml --xpath '/bookstore/book[@category="children" , year > 2003]/*[name()="author" or name()="title"]/text()' harry potter j k. rowling
Comments
Post a Comment