Overview
The wiki discusses upon the enhancement of xpath-capabilities for searching specific elements via CPS-core API and basically to:
- provide possibility to run xpath-searches over multiple anchors and dataspaces
- provide possibilites to search for specific ranges, operators <>, regex ...
which can be included in future releases.
The second part of this wiki discusses some inconsistencies noticed with the response codes returned by CPS core API's. and how it can be improved.
Cps Xpath Possibilities
Jira : CPS-1131
1.Using >,< operators
Xpath >,< operaters | Select price nodes with price>800 /bookstore/book[@price>800] &limit=4 /bookstore/book[@price>800 and @price<1000]&limit=10 selects all the title nodes with a price higher than 800 /bookstore/book[@price>800]/title&limit=2 |
2.Using Contains function
Xpath contains function | It is used when the value of any attribute changes dynamically, The contain feature has an ability to find the element with partial text as shown in below XPath example: /bookstore/book/[contains(@language,'en')]XPath expression partial value ‘en’ is used in place English |
3.Using OR & AND functions
Xpath OR & AND functions |
/bookstore/book/[@title='The Golden compass' or @lang='english']
/bookstore/book/[@title='The Golden compass' and @lang='english']
/bookstore /book[@author contains("Philip Pullman") and @title = "The Golden compass "] /bookstore /book[@author contains("Iain M. Banks") and (@title contains("Far Horizons") or @title contains("Feersum Endjinn "))] |
4.Using starts-with/Ends-with function
Xpath starts-with function |
Code = “sid1” /bookstore/book[starts-with(@code,'sid')] Here, XPath finds those element whose ‘Code’ starting with ‘sid’. |
similarly,
Xpath Ends-with function |
Code = “1-sid” Code = “2-sid” Code = “3-sid” Code = “4-sid” Code = “5-sid”
/bookstore/book[ends-with(@code,'sid')] Here, XPath finds those element whose ‘Code’ ending with ‘sid’. |
5.Using Reqular Expression
Xpath Regular Expressions | Suppose ‘title’: ‘Feersum Endjinn’ /bookstore/book[@title = ^([a-zA-Z{10}\s])] Here, Xpath finds title attributes accordingly as given in expression |
Search along multiple anchors within a dataspace
Need to create new end point. For Example, http://localhost:8883/cps/api/v1/dataspaces/:dataspace-name/nodes?xpath=/bookstore/categories[@code='02'][@title='The Golden Compass'] |
Note: If search across all anchors takes much time then drop this plan